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

botbuilder-adapter-vonage-js运行报错bot.reply is not a function

故障原因及修复方案

核心错误原因

  • 你实例化的IntersectionBot属于Bot Framework原生的Bot类,本身不存在reply方法,该方法仅Botkit的BotWorker实例或适配后的上下文对象支持
  • 你的adapter.processActivity回调未接收上下文参数context,导致上下文变量未定义,同时onTurnError回调也漏传了context参数

具体修复步骤

  1. 修正回调参数遗漏问题
    首先修改onTurnError的参数定义:
// 修改前
// adapter.onTurnError = async (, error) => {
// 修改后
adapter.onTurnError = async (context, error) => {

再修改入站webhook的processActivity回调参数:

// 修改前
// adapter.processActivity(req, res, async () => {
// 修改后
adapter.processActivity(req, res, async (context) => {
  1. 替换发消息调用方法
    如果用Bot Framework原生能力发送消息,直接调用上下文的sendActivity方法即可,无需通过bot实例调用:
// 替换掉 await bot.reply('Hello Back!');
await context.sendActivity('Hello Back!');

如果要使用Botkit的reply方法,需要改用Botkit标准初始化流程,不要手动接管webhook路由:

// 初始化Botkit控制器
const controller = new Botkit({
  adapter: adapter,
  storage: memoryStorage,
  webserver: app
});

// 监听所有消息并回复
controller.on('message', async (bot, message) => {
  await bot.reply(message, 'Hello Back!');
});

自定义适配器调试方法

  • 在适配器的processActivity方法入口添加日志,确认入站消息解析、TurnContext构造是否符合预期(从你提供的日志看这一步目前是正常的)
  • 在适配器的sendActivities方法入口添加日志,确认发消息请求是否正常进入适配器逻辑、Vonage接口调用参数是否正确
  • 可以在适配器调用Vonage发消息接口的位置加错误捕获,打印接口返回的报错信息,排查是参数问题还是接口鉴权问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 14:09:02