You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

跳转第三方Facebook Messenger机器人时如何自动携带预设文本消息?

可以实现!用Messenger深度链接+Webhook事件监听就能搞定

嘿,这个需求完全可行,不用纠结Send API单独的用法——我们需要结合Messenger深度链接Webhook事件触发来实现自动发送城市名的效果,具体步骤如下:

1. 构造带城市参数的Messenger深度链接

你需要给用户生成一个包含城市信息的专属Messenger打开链接,格式是:

https://m.me/[你的机器人页面用户名]?ref=[URL编码后的城市名]

举个例子,你的机器人页面用户名为WeatherBotXYZ,城市是苏黎世,链接就是:

https://m.me/WeatherBotXYZ?ref=Zurich

如果是带空格的城市名(比如“New York”),记得做URL编码,变成New%20York,避免链接解析出错。

用户点击这个链接后,会直接跳转到Messenger并打开和你机器人的对话窗口。

2. 在Webhook中监听Referral事件

当用户通过带ref参数的链接进入对话时,Facebook会向你的机器人Webhook发送一个messaging_referrals事件,里面包含你传递的城市参数。

首先要确保你在Facebook开发者后台的Webhook设置里,已经订阅了messaging_referrals这个事件类型。

然后在你的Webhook处理代码中,捕获这个事件并提取ref值:

// 示例Node.js代码片段
app.post('/webhook', (req, res) => {
  const body = req.body;
  if (body.object === 'page') {
    body.entry.forEach(entry => {
      entry.messaging.forEach(event => {
        // 监听Referral事件
        if (event.referral) {
          const psid = event.sender.id;
          const city = event.referral.ref; // 这里拿到传递的城市名,比如Zurich
          // 调用Send API发送该城市的天气预报
          sendWeatherForecast(psid, city);
        }
      });
    });
    res.status(200).send('EVENT_RECEIVED');
  } else {
    res.sendStatus(404);
  }
});

3. 自动发送天气预报

拿到城市名和用户的PSID后,就可以调用Send API给用户自动发送对应的天气预报了——这一步就是你熟悉的Send API用法,把城市作为查询参数传入你的天气接口,再把结果发给用户即可。

注意事项

  • 如果用户之前已经和你的机器人互动过,再次点击带ref的链接,依然会触发referral事件,所以不用担心重复互动的问题。
  • 一定要对城市名做URL编码,避免特殊字符导致参数解析失败。
  • 确保你的机器人已经通过Facebook的审核,具备发送消息的权限(尤其是主动消息的权限,不过这里是用户触发的事件,属于合规范围)。

这样用户点击链接后,不用手动输入城市,一进入对话就能看到苏黎世的天气预报啦!

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

火山引擎 最新活动