【发布时间】:2021-02-23 16:50:17
【问题描述】:
我正在构建几个具有 DialogFlow 和 Hangouts Chat 集成的机器人。 如何检索用户向机器人发送的用户电子邮件? 当我看到从环聊聊天发送到 Dialogflow 的请求时,我看不到有关用户的任何信息,这就像一个匿名请求。 有没有人找到解决方法?
【问题讨论】:
-
参考this。
标签: dialogflow-es hangouts-chat
我正在构建几个具有 DialogFlow 和 Hangouts Chat 集成的机器人。 如何检索用户向机器人发送的用户电子邮件? 当我看到从环聊聊天发送到 Dialogflow 的请求时,我看不到有关用户的任何信息,这就像一个匿名请求。 有没有人找到解决方法?
【问题讨论】:
标签: dialogflow-es hangouts-chat
可以使用事件检索:
对于像消息这样的每个事件,添加或删除聊天的新用户可以拨打event.user,它具有以下字段:
event.user.name:用户名
event.user.email:用户邮箱
event.user.displayName:“显示”用户名
event.user.avatarUrl: 用户头像的img url
例如,使用 onMessage(event) 函数的工作代码,对于与机器人的每次交互,机器人都会以用户名和消息来回答:
function onMessage(event) {
if (event.type == "MESSAGE" || event.space.type == "DM" ) {
var message = event.user.displayName + " said " + event.message.argumentText;
return { "text": message };
}
}
回应:
Benoit said How to get usernames on Hangouts bots?
环聊上的 JSON 事件格式示意图:
More documentation on hangouts events format and examples of use
【讨论】:
好的。想通了……
确实,您需要使用 Fullfilment 来处理意图。 在默认的 fullfilment 函数中,你会看到这段代码:
exports.dialogflowFirebaseFulfillment = functions.https.onRequest((request, response) => {
const agent = new WebhookClient({ request, response });
console.log('Dialogflow Request headers: ' + JSON.stringify(request.headers));
console.log('Dialogflow Request body: ' + JSON.stringify(request.body));
//... REST OF THE CODE WHERE YOU 'LL HANDLE THE INTENTS
});
您通常从应用脚本聊天机器人中获得的事件信息位于
request.body
例如电子邮件:
const email = request.body.originalDetectIntentRequest.payload.data.event.user.email;
在该用户对象中,您还会发现:
【讨论】:
好的,这里的解决方案是启用实现并将其作为云功能处理。云函数的输入json包含了所有的事件json。
我想在不使用云功能的情况下回复“Hello @name”
【讨论】: