Botframework 如何发送1:1的欢迎信息?

Botframework 如何发送1:1的欢迎信息?,botframework,microsoft-teams,Botframework,Microsoft Teams,我希望在用户安装我的团队机器人时发送欢迎消息 我查看了Teams API文档,收到了关于这是否可行的混合消息。我在不同的地方读到,我的机器人应该在安装机器人时收到对话更新,并且在各种问题上读到我不会收到这样的事件 但是,存在具有此功能的bot。Hipmunk在安装了私有范围后,会向我发送一条消息,而不会被进一步激怒。这个机器人如何做到这一点,我如何复制这个功能 感谢文档可能存在冲突,因为MS团队在实现所有botframework功能方面进展非常快。我们也做了一些相当大的更改--我个人不知道这些具

我希望在用户安装我的团队机器人时发送欢迎消息

我查看了Teams API文档,收到了关于这是否可行的混合消息。我在不同的地方读到,我的机器人应该在安装机器人时收到对话更新,并且在各种问题上读到我不会收到这样的事件

但是,存在具有此功能的bot。Hipmunk在安装了私有范围后,会向我发送一条消息,而不会被进一步激怒。这个机器人如何做到这一点,我如何复制这个功能


感谢

文档可能存在冲突,因为MS团队在实现所有botframework功能方面进展非常快。我们也做了一些相当大的更改--我个人不知道这些具体的更改是否使机器人能够接收团队会话更新,或者它是否因为其他原因工作

应通过渠道相当准确地反映活动的当前状态

我刚刚测试了一个团队机器人,它通过几个场景捕获每个活动,下面是活动处理程序触发的内容:

当用户第一次添加机器人时(1:1欢迎消息):

  • OnConversationUpdate
  • 安图恩
  • 无会员
  • 昂迪奥格
将机器人安装到频道时(组欢迎消息):

注意:当用户被添加到已经存在bot的团队(而不是团队中的通道)时,这些也应该触发,但我无法测试这一点

  • 安图恩
  • OnConversationUpdate
  • 无会员
  • 昂迪奥格
向机器人发送消息时:

  • 安图恩
  • OnMessage
  • 昂迪奥格
下面是我用来测试它的代码(来自
bot.ts
,构建于):

从'botbuilder'导入{ActivityHandler,MessageFactory,TurnContext};
导出类MyBot扩展ActivityHandler{
构造函数(){
超级();
//看https://aka.ms/about-bot-activity-message 了解有关消息和其他活动类型的详细信息。
this.onTurn(异步(turnContext,next)=>{wait this.sendTeamsMessage('onTurn',turnContext');wait next();});
this.onMembersAdded(异步(turnContext,next)=>{wait this.sendTeamsMessage('onMembersAdded',turnContext);wait next();});
this.onMembersRemoved(异步(turnContext,next)=>{wait this.sendTeamsMessage('onMembersRemoved',turnContext);wait next();});
this.onEvent(异步(turnContext,next)=>{wait this.sendTeamsMessage('onEvent',turnContext');wait next();});
this.onConversationUpdate(异步(turnContext,next)=>{wait this.sendTeamsMessage('onConversationUpdate',turnContext);wait next();});
this.onMessage(异步(turnContext,next)=>{wait this.sendTeamsMessage('onMessage',turnContext');wait next();});
this.onTokenResponseEvent(异步(turnContext,next)=>{wait this.sendTeamsMessage('onTokenResponseEvent',turnContext);wait next();});
this.onUnrecognedActivityType(异步(turnContext,next)=>{wait this.sendTeamsMessage('onUnrecognedActivityType',turnContext);wait next();});
this.onDialog(异步(turnContext,next)=>{wait this.sendTeamsMessage('onDialog',turnContext');wait next();});
}
private sendTeamsMessage=async(activityHandlerName:string,turnContext:turnContext)=>{
const message=MessageFactory.text(`**[${activityHandlerName}]**接收到事件`);
等待turnContext.sendActivity(消息);
console.log(`Sent:${message.text}`)
}
}
注意:
wait next()
确保可以为给定活动调用所有适当的活动处理程序,而不是在调用第一个(
onTurn
)后停止

发送1:1的欢迎信息 这样的方法应该可以(从以下方面)起作用:

this.onMembersAdded(异步(上下文)=>{
const membersAdded=context.activity.membersAdded;
for(成员的常量成员添加){
if(member.id!==context.activity.recipient.id){
const welcomeCard=CardFactory.adaptiveCard(welcomeCard);
wait context.sendActivity({附件:[welcomeCard]});
}
}
});

我们正在使用新的活动处理程序编写示例,但您可以从中获得一些想法。我是用TypeScript写的,但它也能工作。

当我第一次创建应用并添加它时,它似乎工作得很好。有没有办法获得卸载和重新安装应用程序的通知,或者我应该只在第一次添加应用程序时才会收到事件?谢谢你的帮助!不幸的是,您几乎必须在Azure中创建一个新的Web应用程序Bot,才能获得一个新的AppId。看,来自MS团队的Wajeed…我在测试这个时也遇到了同样的问题。我没有每次都制作一个新的Web应用程序机器人,而是让我的同事尝试安装它。如果你遇到更容易的事情,请告诉我!我没有像Wajeed在回答中提到的那样使用Team scope进行测试。只是为了更新这个问题,如果将来有人想测试他们的欢迎消息,而不必使用其他用户安装bot,那么可以与bot Framework Emulator启动新的对话,该模拟器每次都会收到欢迎消息。