Как мне вернуть активность ввода с моего бота v4 - PullRequest
1 голос
/ 16 марта 2020

Я пытаюсь добавить действие набора текста к длительному действию в моем боте, но я продолжаю получать ошибку "BadGateway". Похоже, что большинство примеров, которые я нашел, относятся к бот-фреймворку v3, поэтому типы или методы больше не отображаются, и я попробовал несколько вариантов для v4 (используя C#), например, следующее:

await turnContext.SendActivityAsync(new Activity() { Type = ActivityTypes.Typing });

или

var typingActivity = new Activity()
{
    Type = ActivityTypes.Typing
    //RelatesTo = turnContext.Activity
};

typingActivity.ApplyConversationReference(typingActivity.GetConversationReference());

или

var act2 = MessageFactory.Text(null);
act2.Type = ActivityTypes.Typing;
await turnContext.SendActivityAsync(act2);

все это приводит к ошибке BadGateway.

Может ли кто-нибудь подсказать мне, где я не так?

Ответы [ 3 ]

1 голос
/ 17 марта 2020

Ваша реализация близка, но нуждается в нескольких небольших корректировках. Кроме того, свойство text является необязательным. Если это не нужно, то вы можете просто удалить его (то же самое для задержки). Это то, что я использую и придерживаюсь документации (переменная используется для соответствия вашему коду). Вы можете ссылаться на документы здесь .

var typingActivity = new Activity[] {
    new Activity { Type = ActivityTypes.Typing },
    new Activity { Type = "delay", Value= 3000 },
    //MessageFactory.Text("Some message", "Some message"),
};

await turnContext.SendActivitiesAsync(typingActivity, cancellationToken);

Надежда на помощь!

1 голос
/ 20 марта 2020

Ответ Стивена Канберга имеет правильный код, но, к сожалению, на данный момент это проблема с обслуживанием, что подтверждается в этой проблеме на Github .

Когда проблема будет решена, она должна быть размещена в выпуске Github выше.

0 голосов
/ 17 марта 2020

Пожалуйста, попробуйте этот код, чтобы отправить набор действий от вашего бота:

protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
{
   var typingActivity = MessageFactory.Text(string.Empty);
   typingActivity.Type = ActivityTypes.Typing;
   await turnContext.SendActivityAsync(typingActivity);
}
...