You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Webhook实现SAP CAI与Twilio对接的最新方案求助

基于Webhook实现SAP CAI与Twilio消息收发的可行方案

问题根源

旧代码失效是因为SAP CAI更新了API规范,原有的sapcai npm包已不再适配新接口,对接流程的凭证要求、API端点也同步发生了变更。

实现步骤与代码示例

1. 准备必要凭证

  • SAP CAI侧:获取Bot ID、版本ID(如production)、API Key(从SAP CAI控制台「Settings > API Keys」路径获取)
  • Twilio侧:获取Account SID、Auth Token,将消息Webhook配置指向你的服务地址(如Twilio Functions的部署URL)

2. 适配新API的Twilio Functions代码

替换旧代码为以下实现,直接调用SAP CAI v2对话API:

exports.handler = async function(context, event, callback) {
    const twiml = new Twilio.twiml.MessagingResponse();
    const axios = require('axios');

    // SAP CAI 配置(从Twilio Functions环境变量读取,避免硬编码)
    const SAP_CAI_BOT_ID = context.SAP_CAI_BOT_ID;
    const SAP_CAI_API_KEY = context.SAP_CAI_API_KEY;
    const SAP_CAI_VERSION = 'production';
    const SAP_CAI_ENDPOINT = `https://api.cai.sap.com/v2/dialog/${SAP_CAI_BOT_ID}/${SAP_CAI_VERSION}/talk`;

    try {
        // 调用SAP CAI对话API
        const caiResponse = await axios.post(SAP_CAI_ENDPOINT, {
            message: {
                type: 'text',
                content: event.Body // Twilio传来的用户消息内容
            },
            conversation_id: event.From // 用用户手机号作为对话ID,维持会话上下文
        }, {
            headers: {
                'Authorization': `Bearer ${SAP_CAI_API_KEY}`,
                'Content-Type': 'application/json'
            }
        });

        // 提取SAP CAI的回复内容
        const caiReply = caiResponse.data.results.replies[0].content;
        twiml.message(caiReply);
        callback(null, twiml);
    } catch (error) {
        console.error('SAP CAI调用失败:', error.response?.data || error.message);
        twiml.message('抱歉,暂时无法回复,请稍后再试。');
        callback(null, twiml);
    }
};

3. Postman测试示例

测试Twilio Webhook接收(模拟Twilio发送用户消息)

  • 请求方法:POST
  • 请求URL:你的Webhook服务地址
  • 请求头:Content-Type: application/x-www-form-urlencoded
  • 请求体(form-data格式):
    • Body: 你好,查询我的订单状态(用户消息内容)
    • From: +1234567890(模拟用户手机号,作为会话ID)
    • To: +0987654321(你的Twilio手机号)

发送请求后,响应会返回Twiml格式的消息内容,即SAP CAI生成的回复。

测试SAP CAI API调用(单独验证接口有效性)

  • 请求方法:POST
  • 请求URL:https://api.cai.sap.com/v2/dialog/{你的Bot ID}/{版本ID}/talk
  • 请求头:
    • Authorization: Bearer {你的SAP CAI API Key}
    • Content-Type: application/json
  • 请求体(JSON格式):
{
    "message": {
        "type": "text",
        "content": "你好,查询我的订单状态"
    },
    "conversation_id": "+1234567890"
}

响应中results.replies数组会包含SAP CAI的回复内容,验证此步骤正常后再对接Twilio即可。

关键注意事项

  • 确保SAP CAI的API Key拥有对话API的调用权限
  • 对话ID需保持唯一且稳定,建议使用用户手机号或Twilio会话ID,以维持会话上下文
  • 必须处理API调用异常,避免Twilio返回错误提示给终端用户

内容的提问来源于stack exchange,提问作者Prócer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 12:54:23