Я новичок в изучении инфраструктуры ботов в Azure.NET, я натолкнулся на этот пример бота (https://github.com/tompaana/intermediator-bot-sample), который отлично демонстрирует сценарий «без участия человека». Я мог выполнить его на локальном хосте, и он работал какожидается.
Когда я опубликовал этот POC на канале MS Teams через службу Azure Bot, этот код возвращает мне исключение «Операция вернула недопустимый код состояния« badrequest ». Это происходит, в частности, когда набирается @Bot GetRequests»в командах. (Эта команда используется для извлечения ожидающих принятых запросов во время сценариев, выполняемых вручную).
Вот фрагмент кода, который вызывает проблему:
//This is the Entry point method of the Bot application
protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
{
if (turnContext.Activity.Text == "@Bot GetRequests")
{
await HandleCommandAsync(turnContext);
}
}
public async virtual Task<bool> HandleCommandAsync(ITurnContext context)
{
Activity activity = context.Activity;
Command command = Command.FromMessageActivity(activity);
bool wasHandled = false;
Activity replyActivity = null;
ConversationReference sender = MessageRouter.CreateSenderConversationReference(activity);
switch (command.BaseCommand)
{
case Commands.GetRequests:
IList<ConnectionRequest> connectionRequests = _messageRouter.RoutingDataManager.GetConnectionRequests();
replyActivity = activity.CreateReply();
replyActivity.Attachments = CreateMultipleConnectionRequestCards(_messageRouter,
connectionRequests, activity.Recipient?.Name);
replyActivity.ChannelData = JsonConvert.SerializeObject(connectionRequests);
wasHandled = true;
break;
}
if (replyActivity != null)
{
//Exception is thrown here when the Bot is published to Teams channel'
await context.SendActivityAsync(replyActivity);
}
return wasHandled;
}
public static IList<Attachment> CreateMultipleConnectionRequestCards(MessageRouter messageRouter,
IList<ConnectionRequest> connectionRequests, string botName = null)
{
IList<Attachment> attachments = new List<Attachment>();
foreach (ConnectionRequest connectionRequest in connectionRequests)
{
attachments.Add(CreateConnectionRequestCard(messageRouter, connectionRequest, botName).ToAttachment());
}
return attachments;
}
Япросто любопытно, что если бы кто-то из сообщества разработчиков когда-либо сталкивался с подобной проблемой. Если да, я был бы очень признателен, если бы я мог получить какую-либо помощь по этому вопросу, чтобы выйти из этой проблемы.