ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

javascript – 在团队平台上更新BotFramework v4中的活动

2019-09-28 05:36:26  阅读:193  来源: 互联网

标签:botframework javascript node-js


我有一个使用NodeJS使用Bot Framework v4开发的机器人,并部署在团队中的多个渠道上.有没有办法可以更新机器人发送的消息?我尝试在BotFrameworkAdapter中实现updateActivity()函数.但是,它不会更新活动.

enter image description here

我将此卡从机器人发送到Teams频道.当有人点击按钮时,有没有办法可以更新卡或消息(禁用按钮)?

解决方法:

关键是要确保在使用updateActivity()时,使用由团队频道创建的正确活动ID.您还需要确保更新的活动获取所有Teams数据集.

在onTurn中,捕获传出的活动,以便您可以轻松保存所有必要的团队频道数据:

public onTurn = async (turnContext: TurnContext) => {

    turnContext.onSendActivities(async (ctx, activities, nextSend) => {
        activities.forEach(async (activity) => {
            if (activity.channelData.saveMe) {
                this.savedActivity = activity;
            }
        });
        return await nextSend();
    });

>注意:可能有另一种方法可以做到这一点.我发现这是最简单的,因为你需要保存所有的channelData,会话信息和activity.id,至少
>如何存储以后要使用的活动取决于您.如果将它存储在构造函数中,它将在每个消息(C#SDK)上重新实例化,或者任何用户都能够更改它(JS SDK).你可能会考虑writing custom storage.
>活动保留所有channelData.通过指定saveMe标志,我们确保保存正确的活动

实例化一些关键变量:

const teamsChannel = '19:8d60061c3d10xxxxxxxxxxxxxxxx@thread.skype';
const serviceUrl = 'https://smba.trafficmanager.net/amer/';

>注意:获取这些变量的最简单方法是将来自团队的消息发送到机器人,同时在传入活动上设置断点
> serviceUrl可能因地理区域而异

发送第一个活动并存储ID:

// This ensures that your bot can send to Teams
turnContext.activity.conversation.id = teamsChannel;
turnContext.activity.serviceUrl = serviceUrl;
MicrosoftAppCredentials.trustServiceUrl(serviceUrl);

// Add the saveMe flag
yourActivity.channelData = { saveMe: true };

const response = await turnContext.sendActivity(yourActivity);
this.activityToUpdateId = response.id;

>如何存储以后使用的ID取决于您.如果将它存储在构造函数中,它将在每个消息(C#SDK)上重新实例化,或者任何用户都能够更改它(JS SDK).你可能会考虑writing custom storage.

更新已保存的活动:

// New data
const card2 = CardFactory.adaptiveCard(adaptiveCard2);

// Set the saved activity.id and new activity data (an adaptiveCard, in this example)
this.savedActivity.id = this.activityToUpdateId;
this.savedActivity.attachments = [card2];

发送更新:

await turnContext.updateActivity(this.savedActivity);

>注意:您可以使用任何内容更新活动.我换掉了完全不同的自适应卡

之前:

enter image description here

后:

enter image description here

标签:botframework,javascript,node-js
来源: https://codeday.me/bug/20190928/1826226.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有