У меня возникли проблемы с разработанным мной чат-ботом, который отлично работает локально, но после развертывания на dev.botframework.com, похоже, не работает.
Мой код ниже, и он прерывается в строке ... await Conversation.SendAsync (activity, () => new MyBot.AppServices.ServiceLUIS ()); где указано {"Авторизация для Microsoft App ID a8641a16-932c-49a5-af8b-a58ab2ce251f завершилась неудачно с кодом состояния" Неавторизован "и фразой причины" Неавторизованный ""}.
Я попробовал инструкции на странице Устранение неполадок аутентификации Bot Framework со следующими результатами:
- Шаг 1: Подключение без пароля на локальном хосте - сработало нормально!
- Шаг 2: Убедитесь, что AppID и пароль верны - они верны!
- Шаг 3: Включите безопасность и запустите на локальном хосте - это не работает :( Однако конечная точка верна, как и MicrosoftAppID и пароль
- Шаг 4. Подключитесь к своему боту с помощью портала разработчика Bot Framework - это тоже работает! Однако при использовании функции веб-чата на портале я также получаю внутреннюю ошибку сервера.
Там, где он ломается, я звоню в мою службу LUIS, поэтому мне кажется, что у моего бота нет разрешения на вызов моей модели LUIS. Однако я не могу найти ничего в Azure, где опубликован мой бот и находится модель LUIS, где я бы позволил модели LUIS авторизовать доступ к моему BOT. Также ничего не отображается в Luis.ai или портале Bot Framework.
Любые идеи о том, как лучше всего решить, действительно были бы полезны!
namespace MyBot
{
[BotAuthentication]
public class MessagesController : ApiController
{
/// <summary>
/// POST: api/Messages
/// Receive a message from a user and reply to it
/// </summary>
public async Task<HttpResponseMessage> Post([FromBody]Activity activity)
{
try
{
if (activity.Type == ActivityTypes.Message)
{
**await Conversation.SendAsync(activity, () => new MyBot.AppServices.ServiceLUIS());**
}
else
{
ConnectorClient connector = new ConnectorClient(new Uri(activity.ServiceUrl));
var reply = HandleSystemMessage(activity);
if (reply != null)
await connector.Conversations.ReplyToActivityAsync(reply);
HandleSystemMessage(activity);
}
var response = Request.CreateResponse(HttpStatusCode.OK);
return response;
}
catch (Exception e)
{
return null;
}
}
private Activity HandleSystemMessage(Activity message)
{
if (message.Type == ActivityTypes.DeleteUserData)
{
// Implement user deletion here
// If we handle user deletion, return a real message
}
else if (message.Type == ActivityTypes.ConversationUpdate)
{
// Handle conversation state changes, like members being added and removed
// Use Activity.MembersAdded and Activity.MembersRemoved and Activity.Action for info
// Not available in all channels
}
else if (message.Type == ActivityTypes.ContactRelationUpdate)
{
// Handle add/remove from contact lists
// Activity.From + Activity.Action represent what happened
}
else if (message.Type == ActivityTypes.Typing)
{
// Handle knowing tha the user is typing
}
else if (message.Type == ActivityTypes.Ping)
{
}
return null;
}
}
}