WatsonX Assistant与Twilio集成:无法获取WhatsApp用户手机号求助
WatsonX Assistant + Twilio WhatsApp集成:无法获取用户手机号的解决办法
- 我之前遇到过完全相同的问题,官方集成确实不会自动将Twilio发送的用户手机号存入WatsonX的上下文变量中。
- 可行的解决路径是通过Twilio Functions添加一层中间处理,手动提取并传递手机号到WatsonX:
- 在Twilio控制台创建一个新的Twilio Function
- 在Function中接收Webhook的POST请求,从
event.From字段提取用户的WhatsApp手机号(格式为whatsapp:+[号码]) - 将提取到的手机号加入发送给WatsonX Assistant的请求上下文变量中(比如命名为
user_phone) - 修改Twilio的Webhook地址,指向该Function的部署URL,由Function转发请求到WatsonX的集成端点
- 以下是Twilio Function的示例代码:
exports.handler = function(context, event, callback) { const axios = require('axios'); const Twilio = require('twilio'); // 从Twilio请求中获取用户手机号和消息内容 const userPhone = event.From; const userMessage = event.Body; // 替换为你的WatsonX Assistant集成端点URL(可从IBM控制台获取) const watsonEndpoint = context.WATSON_ASSISTANT_INTEGRATION_URL; // 构造发送给WatsonX的请求体,将手机号存入上下文变量 const watsonRequest = { input: { text: userMessage }, context: { variables: { user_phone: userPhone } } }; // 转发请求到WatsonX并处理回复 axios.post(watsonEndpoint, watsonRequest, { headers: { 'Content-Type': 'application/json' } }) .then(response => { const botReply = response.data.output.generic[0].text; const twiml = new Twilio.twiml.MessagingResponse(); twiml.message(botReply); callback(null, twiml); }) .catch(err => { console.error('请求WatsonX失败:', err); callback(err); }); };
- 额外注意:需要在WatsonX Assistant的技能中预先定义
user_phone这个上下文变量,这样就能在对话流程的节点或回复中直接引用${user_phone}了。 - 官方集成没有提供自定义字段映射的选项,所以中间件中转是目前最可靠的解决方式。
内容的提问来源于stack exchange,提问作者Lucas MiraB
相关产品推荐
相关产品推荐

