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

如何通过Twilio网关接入Dialogflow ES机器人实现外呼及获取action链接?

解决方案

一、将Dialogflow ES接入Twilio外呼通话

  1. 确认Twilio与Dialogflow ES的集成配置:你已添加Dialogflow ES插件,接下来需在Twilio控制台的插件库启用该插件,完成Google Cloud/Dialogflow账号的授权关联。
  2. 生成对接Dialogflow的TwiML:外呼接通后,需返回包含<Connect>标签的TwiML,将通话转接到Dialogflow机器人。Python SDK实现示例:
from twilio.twiml.voice_response import VoiceResponse, Connect

response = VoiceResponse()
connect = Connect()
connect.dialogflow()  # 自动关联已配置的Dialogflow ES代理
response.append(connect)
print(response)
  1. 配置Dialogflow语音响应:在Dialogflow ES中,确保所有意图都设置了语音响应(通话场景仅支持语音交互),并启用语音输入自动识别功能。
  2. 指定外呼的TwiML路由:发起外呼的代码里,将url参数指向能返回上述TwiML的webhook端点(比如你自己的Flask接口),Twilio接通后会自动拉取TwiML并连接到Dialogflow。

二、Connect组件中action链接的说明

action参数的值是你自行搭建的webhook端点URL,作用是在Dialogflow会话结束(用户挂断、流程完成、超时等场景)时,Twilio会向该URL发送POST请求,传递通话状态、会话结果等数据。

  • 实现方式:用Python框架(如Flask)编写接收POST请求的接口,示例代码:
from flask import Flask, request

app = Flask(__name__)

@app.route('/virtualagent_ended', methods=['POST'])
def virtual_agent_ended():
    # 处理Twilio发送的回调数据,如CallSid、对话结果等
    call_sid = request.form.get('CallSid')
    print(f"会话结束,CallSid: {call_sid}")
    # 返回空TwiML或后续处理指令
    return "<Response></Response>"

if __name__ == '__main__':
    app.run(port=5000)
  • 测试与部署:本地测试时,用ngrok将本地端口暴露为公网URL(如https://xxxx-xx-xx-xx-xx.ngrok.io/virtualagent_ended),此URL即为action值;部署到云服务后,使用云服务域名+接口路径即可。

内容的提问来源于stack exchange,提问作者oToMaTiX

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 03:30:56