Dialogflow - Fulfillment - Добавить список участников - PullRequest
1 голос
/ 13 марта 2019

Я пытаюсь создать небольшого чат-бота, который может записаться на прием. Я не нашел код, позволяющий мне динамически добавлять участников.

Мой агент имеет массив адресов электронной почты:

agent.parameters.invites [0] => электронная почта 1
agent.parameters.invites [1] => электронная почта 2 ...

это моя функция:

    function createCalendarEvent (dateTimeStart, dateTimeEnd, room, calendarId, agent, organisateur,objet) {  return new Promise((resolve, reject) => {
    calendar.events.list({  // List all events in the specified time period
      auth: serviceAccountAuth,
      calendarId: calendarId,
      timeMin: dateTimeStart.toISOString(),
      timeMax: dateTimeEnd.toISOString()
    }, (err, calendarResponse) => {
      // Check if there exists any event on the calendar given the specified the time period
      if (err || calendarResponse.data.items.length > 0) {
          if (err) {agent.add(err.toString());}
        reject(err || new Error('Heure demandée en conflit avec un autre RDV.'));
      } else {

        calendar.events.insert({ auth: serviceAccountAuth,
          calendarId: calendarId,
          resource: {summary: objet + ' - salle : '+ room + ' - organisé par  ' + agent.parameters.orga,
            start: {dateTime: dateTimeStart},
            end: {dateTime: dateTimeEnd},
            description: objet,
            location: room,
            //source : {title : "JPV objet"}
            //organizer : {'email': organisateur},
            attendees: [{'email': agent.parameters.invites[0],"organizer": true}, {'email':agent.parameters.invites[1]}],
            sendUpdates :'all', 
            sendNotifications: true,
          }
        }, (err, event) => {
          err ? reject(err) : resolve(event);
        }
        );

      }
    });
  });
}

Вы можете мне помочь?

С уважением,

1 Ответ

0 голосов
/ 13 марта 2019

Из того, что вы показываете, agent.parameters.invites - это массив, и вам нужен массив, который вы передаете как часть параметра attendees.

В JavaScript отличный способ сделатьдля этого используется функция Array.map(), которая вызывает функцию для каждого значения в массиве и возвращает новый массив с результатом вызова каждой функции.Функция вызывается со значением этого элемента из исходного массива и (необязательно) индекса.

Я не проверял это, но что-то вроде этого должно работать

let attendees = agent.parameters.invites.map( (value, index) => {
  return {
    email: value,
    organizer: (index === 0)
  }
});

изатем используя этот массив attendees в качестве значения параметра attendees в вашем вызове.

Функция в этом случае принимает каждое значение и индекс и возвращает новый объект со значением, установленным для *Параметр 1017 * и organizer установлены в значение true, если это первый элемент (в противном случае - значение false).

...