Dialogflow - Fulfillment - 添加受邀者列表
Dialogflow - Fulfillment - Add a list of Intendees
我正在尝试制作一个可以预约的小型聊天机器人。
我没有找到允许我动态添加意向者的代码。
我的代理有一系列电子邮件:
agent.parameters.invites[0] => email 1
agent.parameters.invites[1] => email 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);
}
);
}
});
});
}
你能帮帮我吗?
此致,
从您展示的内容来看,agent.parameters.invites
是一个数组,您需要一个作为 attendees
参数的一部分传递的数组。
在 JavaScript 中,一个很好的方法是使用 Array.map()
函数,它对数组中的每个值调用一个函数,并 returns 一个新数组调用每个函数的结果。使用源数组中该元素的值和(可选)索引调用该函数。
我还没有测试过这个,但是像这样的东西应该可以工作
let attendees = agent.parameters.invites.map( (value, index) => {
return {
email: value,
organizer: (index === 0)
}
});
然后使用此 attendees
数组作为调用中 attendees
参数的值。
本例中的函数采用每个值和索引,并且 returns 一个新对象,其值设置为 email
参数并且 organizer
设置为 true 如果此是第一项(否则为 false)。
我正在尝试制作一个可以预约的小型聊天机器人。 我没有找到允许我动态添加意向者的代码。
我的代理有一系列电子邮件:
agent.parameters.invites[0] => email 1
agent.parameters.invites[1] => email 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);
}
);
}
});
});
}
你能帮帮我吗?
此致,
从您展示的内容来看,agent.parameters.invites
是一个数组,您需要一个作为 attendees
参数的一部分传递的数组。
在 JavaScript 中,一个很好的方法是使用 Array.map()
函数,它对数组中的每个值调用一个函数,并 returns 一个新数组调用每个函数的结果。使用源数组中该元素的值和(可选)索引调用该函数。
我还没有测试过这个,但是像这样的东西应该可以工作
let attendees = agent.parameters.invites.map( (value, index) => {
return {
email: value,
organizer: (index === 0)
}
});
然后使用此 attendees
数组作为调用中 attendees
参数的值。
本例中的函数采用每个值和索引,并且 returns 一个新对象,其值设置为 email
参数并且 organizer
设置为 true 如果此是第一项(否则为 false)。