如何将WhatsApp消息内容与用户号码传递至Dialogflow ES API?
解决Dialogflow detectIntent自定义Payload不显示在Fulfillment中的问题
问题出在你放置自定义Payload的位置错误,Dialogflow的detectIntent接口要求客户端自定义数据必须放在queryParams.payload字段下,而非请求根节点的payload字段。
修改后的代码示例
const sessionId = phone_number_id; // 用手机号作为会话ID const sessionPath = sessionClient.projectAgentSessionPath(projectId, sessionId); const request = { session: sessionPath, queryInput: { text: { text: msg_body, languageCode: "id-ID" }, }, // 把自定义数据放在queryParams.payload下 queryParams: { payload: { data: "testing", phoneNumber: phone_number_id } } }; console.log("request", request); await sessionClient.detectIntent(request) .then(responses => { console.log("DetectIntent", JSON.stringify(responses)); }) .catch(err => { console.error("ERROR:", err); });
在Fulfillment中获取自定义数据
调整后,你的自定义Payload会出现在Fulfillment请求体的originalDetectIntentRequest.payload中,比如在Node.js Fulfillment里可以这样获取:
// 假设request是Fulfillment收到的请求对象 const userPhoneNumber = request.body.originalDetectIntentRequest.payload.phoneNumber; const customData = request.body.originalDetectIntentRequest.payload.data;
内容的提问来源于stack exchange,提问作者Maulana ahmad
相关产品推荐
相关产品推荐

