首页 > 解决方案 > 从中间件的传入部分发送的 context.sendActivity 没有通过 onSendActivities 函数

问题描述

在中间件中,我正在向用户发送一些消息以检查某些条件......

然而,这些并没有通过中间件的 onSendActivities 部分......(有或没有短路......)即一直调用 next() 并且有时跳过调用 next() ......

这是一个错误吗?或有意内置.. 至少期望从中间件功能的传入部分发送的所有消息都通过此功能。

  async onTurn( (context, next) => {
    //....
      await context.sendActivity(`whatever`)

      this.Bot.adapter.continueConversation(userRef, async turnContext => { 
           // the below one does not show up in console
           await turnContext.sendActivity(`Another message to user`); 
      })

     await context.onSendActivities( (sendContext, activities, sendNext) => {
       // expected both above sent to hit here...
        console.log(`activities : ${activities.map(a => a.text).join(',')}`)
       await sendNext()
     })
     await next()
  })

标签: botframework

解决方案


您需要循环通过方法中的activities对象onSendActivities()来记录活动。如果您希望对特定活动采取行动,那么您可以解析每个活动以查找您需要匹配的任何标志或值,然后执行您的操作。

await context.sendActivity(`whatever`);
await context.onSendActivities(async (sendContext, activities, sendNext) => {
  for (let activity of activities) {
    console.log('SEND ACTIVITY ', activity);
  }
  return await sendNext();
});

希望有帮助!


推荐阅读