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

如何通过DialogFlow实现短信(SMS)发送功能?求教程与指导

嘿,我刚好做过类似的功能,给你梳理下完整的实现步骤,应该能帮到你!

用DialogFlow实现机器人索要号码并发送短信的完整指南

核心思路

DialogFlow本身不直接支持发送短信,所以我们需要通过**Webhook(自定义后端服务)**对接第三方短信API,流程大概是:机器人引导用户提供手机号 → 收集到号码后触发Webhook → 后端调用短信服务商API完成发送。


具体步骤分解

1. 在DialogFlow中配置意图,收集用户手机号

  • 创建一个意图(比如命名为GetPhoneNumber),设置触发短语,比如“我需要接收短信”“帮我发个验证码”这类表述。
  • 在训练短语里添加用户可能说的内容,比如“请给我发短信”“我要收验证码”,覆盖更多用户话术场景。
  • 启用参数,添加@sys.phone-number系统实体,用来自动识别用户输入的手机号。把这个参数设为必填,当用户没提供时,DialogFlow会自动触发追问(比如设置追问语为“麻烦告诉我你的手机号哦?”)。
  • 在响应里设置收集到号码后的提示,比如“好的,我这就给你发送短信,请留意查收!”

2. 搭建Webhook后端服务(以Node.js为例)

你需要一个能接收DialogFlow请求的后端,这里用Express框架写个极简示例:

const express = require('express');
const bodyParser = require('body-parser');
const twilio = require('twilio'); // 这里用Twilio做示例,国内可以替换成阿里云/腾讯云短信SDK

const app = express();
app.use(bodyParser.json());

// DialogFlow Webhook端点
app.post('/webhook', async (req, res) => {
  // 从DialogFlow请求中提取用户提供的手机号
  const phoneNumber = req.body.queryResult.parameters['phone-number'];
  
  // 调用短信服务商API发送短信
  try {
    // 初始化Twilio客户端(替换成你的账号信息)
    const client = twilio('你的Twilio Account SID', '你的Twilio Auth Token');
    
    await client.messages.create({
      body: '这是来自你机器人的测试短信!',
      from: '你的Twilio专属手机号',
      to: phoneNumber // 用户提供的目标号码
    });
    
    // 给DialogFlow返回成功响应,让机器人同步告知用户
    res.json({
      fulfillmentText: '短信已经发送啦,请注意查收~'
    });
  } catch (error) {
    console.error('发送短信失败:', error);
    res.json({
      fulfillmentText: '抱歉,短信发送失败了,请稍后再试!'
    });
  }
});

app.listen(3000, () => {
  console.log('Webhook服务运行在端口3000');
});

3. 在DialogFlow中配置Webhook

  • 进入DialogFlow控制台,打开Fulfillment页面,启用Webhook功能。
  • 在URL栏填写你的后端服务公网地址(测试阶段可以用ngrok把本地3000端口映射成公网地址,方便快速调试)。
  • 回到之前创建的GetPhoneNumber意图,在Fulfillment部分勾选“Enable webhook call for this intent”,这样当收集到手机号后就会自动触发我们的后端服务。

4. 选择合适的短信服务商

  • 海外场景可以用Twilio、Plivo;国内推荐阿里云短信服务、腾讯云短信、华为云短信,这些服务商都有完善的API文档和SDK,集成难度很低。
  • 注意:国内短信需要提前完成备案,并且申请合规的短信模板,别忘记提前准备哦。

5. 功能测试

  • 在DialogFlow的Test Console里输入触发短语,比如“我要收短信”,然后输入手机号,检查机器人是否能正确收集号码、触发Webhook,后端是否成功发送短信。

一些实用提醒

  • 要处理手机号格式问题,不同地区号码格式有差异,DialogFlow的@sys.phone-number实体能自动识别,但后端最好再加一层格式校验,避免无效号码。
  • 短信内容要符合服务商的规范,避开敏感词,不然会被拦截发送失败。
  • 生产环境一定要给后端服务加安全验证,比如校验DialogFlow的请求签名,防止恶意请求攻击。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:51:15