如何从Twilio集成的WhatsApp(含试用沙盒号)获取用户号码至IBM Watson Assistant
通过Twilio自动获取WhatsApp用户号码并传给IBM Watson Assistant
完全可行,不管你用的是Twilio试用沙盒号还是正式号码,都能实现这个需求,具体步骤如下:
从Twilio Webhook请求中提取用户号码
用户给你的Twilio沙盒号发送消息时,Twilio会向你配置的Webhook地址发送HTTP请求,请求体里的From参数就是用户的WhatsApp号码,格式为whatsapp:+[国家代码][手机号](例如whatsapp:+1234567890)。将号码传入IBM Watson Assistant
在处理Webhook的后端代码里,提取From参数后,调用Watson Assistant的消息API时,把这个号码作为上下文变量传入。以下是Node.js的简单示例:const express = require('express'); const twilio = require('twilio'); const AssistantV1 = require('ibm-watson/assistant/v1'); const { IamAuthenticator } = require('ibm-watson/auth'); const app = express(); app.use(express.urlencoded({ extended: false })); const watsonAssistant = new AssistantV1({ version: '2021-06-14', authenticator: new IamAuthenticator({ apikey: 'YOUR_WATSON_API_KEY' }), serviceUrl: 'YOUR_WATSON_SERVICE_URL' }); app.post('/twilio-webhook', (req, res) => { // 提取用户WhatsApp号码 const userPhoneNumber = req.body.From; const userMessage = req.body.Body; // 调用Watson Assistant API,传入号码作为上下文变量 watsonAssistant.message({ workspaceId: 'YOUR_WORKSPACE_ID', input: { text: userMessage }, context: { user_phone: userPhoneNumber } }) .then(watsonResponse => { // 生成Twilio回复 const twiml = new twilio.twiml.MessagingResponse(); twiml.message(watsonResponse.output.text[0]); res.type('text/xml').send(twiml.toString()); }) .catch(err => { console.error('Watson API调用错误:', err); res.sendStatus(500); }); }); app.listen(3000, () => console.log('服务器运行在端口3000'));在Watson Assistant中使用用户号码
在Watson的对话节点里,你可以通过$user_phone这个上下文变量直接引用用户的号码,比如设置回复内容为已记录你的号码:$user_phone,或者基于这个号码实现其他业务逻辑。试用沙盒号的兼容性
Twilio的试用沙盒号完全支持From参数的传递,和正式号码的功能没有差异,所以你当前的测试环境完全可以正常实现这个需求。
内容的提问来源于stack exchange,提问作者Rama Chaker
相关产品推荐
相关产品推荐

