Botframework 如何发送1:1的欢迎信息?
我希望在用户安装我的团队机器人时发送欢迎消息 我查看了Teams API文档,收到了关于这是否可行的混合消息。我在不同的地方读到,我的机器人应该在安装机器人时收到对话更新,并且在各种问题上读到我不会收到这样的事件 但是,存在具有此功能的bot。Hipmunk在安装了私有范围后,会向我发送一条消息,而不会被进一步激怒。这个机器人如何做到这一点,我如何复制这个功能Botframework 如何发送1:1的欢迎信息?,botframework,microsoft-teams,Botframework,Microsoft Teams,我希望在用户安装我的团队机器人时发送欢迎消息 我查看了Teams API文档,收到了关于这是否可行的混合消息。我在不同的地方读到,我的机器人应该在安装机器人时收到对话更新,并且在各种问题上读到我不会收到这样的事件 但是,存在具有此功能的bot。Hipmunk在安装了私有范围后,会向我发送一条消息,而不会被进一步激怒。这个机器人如何做到这一点,我如何复制这个功能 感谢文档可能存在冲突,因为MS团队在实现所有botframework功能方面进展非常快。我们也做了一些相当大的更改--我个人不知道这些具
感谢文档可能存在冲突,因为MS团队在实现所有botframework功能方面进展非常快。我们也做了一些相当大的更改--我个人不知道这些具体的更改是否使机器人能够接收团队会话更新,或者它是否因为其他原因工作 应通过渠道相当准确地反映活动的当前状态 我刚刚测试了一个团队机器人,它通过几个场景捕获每个活动,下面是活动处理程序触发的内容: 当用户第一次添加机器人时(1:1欢迎消息):
- OnConversationUpdate
- 安图恩
- 无会员
- 昂迪奥格
- 安图恩
- 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启动新的对话,该模拟器每次都会收到欢迎消息。