5

Korzystam z interfejsu API calendar.events.insert, aby dodać wydarzenie do mojego kalendarza za pośrednictwem klienta PHP. Zdarzenie jest wstawiane poprawnie wraz z odpowiednimi wartościami ustawionymi przez interfejs API. To samo nie jest jednak w stanie wywołać zaproszenia e-mailowego dla uczestników. Rozejrzałem się wokół, aby stwierdzić, że żądanie musi ustawić parametr jako true . To samo nie pomaga.Wysyłanie powiadomień e-mail o zdarzeniach za pośrednictwem interfejsu API Kalendarza Google

Oto przykładowy kod:

var request = gapi.client.calendar.events.insert({ 
     "calendarId" : calendarData.id, 
     "sendNotifications": true, 
     "end": { 
      "dateTime": eventData.endTime 
     }, 
     "start": { 
      "dateTime": eventData.startTime 
     }, 
     "summary": eventData.eventName, 
     "attendees": jQuery.map(eventData.attendees, function(a) { 
      return {'email' : a}; 
     }), 
     "reminders": { 
      "useDefault": false, 
      "overrides": [ 
      { 
       "method": "email", 
       "minutes": 15 
      }, 
      { 
       "method": "popup", 
       "minutes": 15 
      } 
      ] 
     } 
     }); 

Gdzie EVENTDATA i calendarData są odpowiednie obiekty.

Chociaż moim głównym problemem jest wysyłanie wiadomości e-mail z zaproszeniami za pierwszym razem, spróbowałem (jak widać powyżej) ustawić przypomnienie (używając przesłonięcia). Chociaż wyskakujące okienko działa zgodnie z oczekiwaniami, w tym przypadku nie otrzymałem również aktualizacji e-mail.

To sprawia, że ​​zastanawiam się, czy to może być problem z uprawnieniami - coś, co muszę włączyć dla mojej aplikacji (użytkownik zrozumiałby, że powinien wiedzieć, czy moja aplikacja wysyła wiadomości e-mail w ich imieniu)?

+0

Czy to możliwe, że zdarzenia są tworzone w przeszłości? W przypadku tych wydarzeń nie są wysyłane żadne wiadomości e-mail. – luc

Odpowiedz

0

W tym celu należy ustawić wartość "remindOnRespondedEventsOnly" na "true".

co oznacza, że ​​przypomnienia o wydarzeniach powinny być wysyłane tylko w przypadku zdarzeń o statusie odpowiedzi "Tak" i "Być może".

Możesz znaleźć te informacje here.

Nadzieję, że pomaga!

1

W Google API Documentation for inserting events opcja "sendNotifications" jest w rzeczywistości parametrem. Możesz umieścić go w parametrach żądania zamiast w treści.

W Meteor

Uwaga: W mojej aplikacji Meteor, ja zrobiłem wniosek strony, a ja wciąż jestem nowy w JavaScript. Nie jestem pewien, jak to zrobiłbyś w prostym JavaScriptu lub z kalendarzowym interfejsem API, więc po prostu wstawię kod Meteor, mam nadzieję, że to pomoże, chociaż jest trochę nie na temat.

var reqUrl = "https://www.googleapis.com/calendar/v3/calendars/primary/events"; 
var payload = { 
    'headers' : { 
    'Authorization': "Bearer " + token, 
    'Content-Type': 'application/json' 
    }, 
    'params': { 
    'sendNotifications': true 
    }, 
    'data': { 
    "summary": summary, 
    "location": "", 
    "start": { 
     "dateTime": start 
    }, 
    "end": { 
     "dateTime": end 
    }, 
    "attendees": [ 
     { 
     "email": "*********@gmail.com" 
     } 
    ] 
    } 
}; 
Meteor.http.post(reqUrl, reqParams, function() {}); 
+0

To jest poprawna odpowiedź. Nie można dodać kodu do komentarza, więc utworzy oddzielną odpowiedź z rzeczywistym kodem js. – ThePuzzleMaster

1

@linaa jest poprawna. Właśnie wpadłem na ten problem.

W JS, będzie to wyglądać tak:

var request = gapi.client.calendar.events.insert(
    sendNotifications: true, 
    { 
       // request body goes here 
    } 
); 
Powiązane problemy