Бот команды с node.js: как обновить сообщение - PullRequest
0 голосов
/ 28 октября 2019

У меня есть рабочий бот C # для клиента Teams, но мне нужно иметь то же самое в node.js. У меня возникла проблема, когда мне нужно обновить отправленное сообщение без контекста.

В своем коде C # я отправляю сообщение и сохраняю идентификатор активности и идентификатор беседы, куда оно было отправлено. Чтобы обновить это действие (при необходимости), я создаю новое действие и использую этот сохраненный идентификатор:

var activityIdSaved = "xxx";
var conversationId_saved = "yyyyy";

var activity = Bot.Schema.Activity.CreateMessageActivity();
activity.Id = activityIdSaved; // set Id (saved activity Id)
activity.Text = "This is updated text";

await connectorClient.Conversations.UpdateActivityAsync(conversationId_saved, activityIdSaved, (Bot.Schema.Activity)activity);

Это правильно работает в C #, но я не могу найти какой метод использовать в node.js длята же цель ...

Спасибо,

Диего

Ответы [ 2 ]

1 голос
/ 29 октября 2019

@ Deigo Так как вы уже реализовали это в C #, вот пример сообщения обновления в NodeJS . Пожалуйста, попробуйте образец и сообщите нам, если у вас возникнут какие-либо проблемы.

1 голос
/ 28 октября 2019

Это почти то же самое, за исключением того, что ConnectorClient нужен baseUri. Примерно так:

const connectorClient = new ConnectorClient(new MicrosoftAppCredentials('<yourAppId>', '<yourAppPassword>'), { baseUri: teamsServiceUrl });

const activity = MessageFactory.text("This is updated text");
activity.id = activityIdSaved;

await connectorClient.conversations.updateActivity(conversationId_saved, activityIdSaved, activity as Activity);

teamsServiceUrl зависит от того, откуда пользователь общается. Для меня это https://smba.trafficmanager.net/amer/, но вам, вероятно, придется динамически получать его с activity.serviceUrl.

Я не уверен, почему вам нужно вручную установить activity.id, а также передать его в updateActivity но я не мог заставить его работать, иначе.

...