5

Sto utilizzando l'API calendar.events.insert per aggiungere un evento al mio calendario tramite il client PHP. L'evento viene inserito correttamente insieme ai valori appropriati impostati dall'API. Lo stesso tuttavia non è in grado di attivare un invito via email ai partecipanti. Mi sono guardato intorno per scoprire che la richiesta deve impostare il parametro sendNotifications come true. Lo stesso non sembra aiutare neanche.Invio di notifiche email per eventi tramite l'API di Google Calendar

Ecco un esempio di codice:

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 
      } 
      ] 
     } 
     }); 

Dove EVENTDATA e calendarData sono oggetti appropriati.

Anche se il mio problema principale è con gli inviti di posta elettronica inviati la prima volta, ho anche provato (come si può vedere sopra) per impostare un promemoria (utilizzando sostituisce). Anche se il popup funziona come previsto, non ho ricevuto neanche un aggiornamento email in questo caso.

Questo mi fa chiedere se questo possa essere un problema di autorizzazione - qualcosa che devo abilitare per la mia app forse (l'utente dovrebbe comprensibilmente sapere se la mia app sta inviando e-mail a loro nome)?

+0

E 'possibile che gli eventi sono creati in passato? Per quegli eventi non vengono inviate e-mail. – luc

risposta

0

Per questo è necessario impostare il valore "remindOnRespondedEventsOnly" su "true".

che significa, Se i promemoria degli eventi devono essere inviati solo per gli eventi con lo stato di risposta dell'utente "Sì" e "Forse".

Potete trovare questa informazione here.

Spero che questo aiuti!

1

Nel Google API Documentation for inserting events, l'opzione "sendNotifications" è in realtà un parametro. Potresti metterlo nei parametri di richiesta anziché nel corpo.

In Meteor

Nota: Nella mia applicazione Meteor, ho fatto fatto la richiesta a mano, e io sono ancora nuovo a JavaScript. Non sono sicuro di come lo farebbe in un semplice JavaScript o con l'API del calendario, quindi inserirò il codice Meteor, spero che sia d'aiuto anche se è un po 'fuori tema.

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

Questa è la risposta corretta. Non è possibile aggiungere codice a un commento, quindi creerà una risposta separata con il codice js effettivo. – ThePuzzleMaster

1

@linaa è corretto. Mi sono imbattuto in questo problema.

In JS, questo sarebbe simile:

var request = gapi.client.calendar.events.insert(
    sendNotifications: true, 
    { 
       // request body goes here 
    } 
); 
Problemi correlati