我正在用DialogFlow和环聊聊天集成构建多个机器人。 我该如何检索猛烈攻击机器人的用户的电子邮件? 当我看到环聊聊天发送给Dialogflow的请求时,看不到有关该用户的任何信息,这就像一个匿名请求。 有人找到解决方法吗?
答案 0 :(得分:1)
可以使用事件进行检索:
对于每个事件(例如消息),您可以致电event.user
来添加或删除聊天中的新用户,它具有以下字段:
event.user.name
:用户名
event.user.email
:用户电子邮件
event.user.displayName
:“显示”用户名
event.user.avatarUrl
:用户头像的img网址
例如,使用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事件格式的图:
答案 1 :(得分:0)
好的,这里的解决方案是实现实现并将其作为云功能进行处理。 cloud函数的输入json包含所有事件json。
我想在不使用云功能的情况下回复“ Hello @name”
答案 2 :(得分:0)
好的。想通了...
实际上,您需要使用 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;
在该用户对象中,您还会发现: