Эмулятор Botframework и ошибка 404

Я пытаюсь написать простого бота, который использует LUIS, но, похоже, после обновления возникла проблема.

Поэтому перед обновлением BotBuilder до 1.1 у меня были проблемы, из-за которых Luis.Models не мог быть найден. После обновления и устранения ошибки кодирования, и удалив Microsoft.Bot.Connector.Utilities, я могу скомпилировать и запустить успешно, но не могу подключиться через эмулятор.

Это код, который я использую.

using System;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;
using System.Web.Http;
using System.Web.Http.Description;
using System.Collections.Generic;
using Microsoft.Bot.Connector;
using Microsoft.Bot.Builder.Dialogs;
//using Microsoft.Bot.Connector.Utilities;
using Microsoft.Bot.Builder.Luis;
using Microsoft.Bot.Builder.Luis.Models;
using Newtonsoft.Json;

[LuisModel("c413b2ef-382c-45bd-8ff0-f76d60e2a821", "6d0966209c6e4f6b835ce34492f3e6d9")]
[Serializable]
public class Mybot : LuisDialog<object>
{

    [LuisIntent("")]
    public async Task None(IDialogContext context, LuisResult result)
    {
        string message = "I'm sorry I didn't understand. Try asking about your bill.";
        await context.PostAsync(message);
        context.Wait(MessageReceived);
    }

    [LuisIntent("NextInvoiceDate")]
    public async Task NextInvoiceDate(IDialogContext context, LuisResult result)
    {
        string message = "Your next payment will go out on the 17th of the month.";
        await context.PostAsync(message);
        context.Wait(MessageReceived);
    }

    [LuisIntent("NextAmount")]
    public async Task NextAmount(IDialogContext context, LuisResult result)
    {
        string message = $"Your next amount is expected to be around £29.72.";
        await context.PostAsync(message);
        context.Wait(MessageReceived);
    }
}

Когда я запускаю проект, он запускается без ошибок, и я получаю веб-страницу, на которой написано:

MYBot Опишите здесь своего бота, условия использования и т. д. Посетите Bot Framework, чтобы зарегистрировать своего бота. При регистрации не забудьте установить конечную точку вашего бота на https://your_bots_hostname/api/messages

Когда я запускаю эмулятор, указывающий на https://localhost/api/messages, он повторно запускает «произошла ошибка, пока отправка запроса ».

JSON здесь:

System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.WebException: Unable to connect to the remote server ---> System.Net.Sockets.SocketException: No connection could be made because the target machine actively refused it 127.0.0.1:443
   at System.Net.Sockets.Socket.EndConnect(IAsyncResult asyncResult)
   at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Exception& exception)
   --- End of inner exception stack trace ---
   at System.Net.HttpWebRequest.EndGetRequestStream(IAsyncResult asyncResult, TransportContext& context)
   at System.Net.Http.HttpClientHandler.GetRequestStreamCallback(IAsyncResult ar)
   --- End of inner exception stack trace ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult()
   at Microsoft.Bot.Connector.Emulator.ConversationModel.<SendMessageAsync>d__50.MoveNext() 

Я также пробовал только HTTP (а не HTTPS).


person Greg Heywood    schedule 08.06.2016    source источник
comment
Мне не хватает фундаментального фрагмента кода? Без LUIS я бы использовал открытый класс MessagesController: ApiController. Нет, я пытаюсь использовать открытый класс Mybot: LuisDialog ‹object›.   -  person Greg Heywood    schedule 08.06.2016
comment
Можете ли вы опубликовать код вашего MessageController? Вам по-прежнему нужен MessageController, даже если вы используете LUIS.   -  person Ezequiel Jadib    schedule 09.06.2016
comment
Спасибо. Я поместил код в исходный пост. Это все содержимое моего MessagesController.cs.   -  person Greg Heywood    schedule 10.06.2016
comment
Я также получаю ошибку 407 при использовании эмулятора Bot Framework! Версия для командной строки работает нормально, но не может интерпретировать JSON, что раздражает и некрасиво.   -  person blueprintchris    schedule 26.10.2016


Ответы (3)


Можете ли вы проверить, что используете правильный URL для своего бота? Проверьте URL-адрес проекта в свойствах вашего проекта и убедитесь, что вы используете правильный номер порта. По умолчанию в шаблоне проекта Bot Framework используется http://localhost: 3978 /

Свойства проекта

person Lukkha Coder    schedule 08.06.2016

Я вижу здесь две вещи:

  1. Вы используете https с localhost и должны быть http (https - это когда размещается в Azure)
  2. Порт работает

Кроме того, вам по-прежнему нужен MessageController, даже если вы используете LUIS (это зависит от добавленного вами комментария).

MessageController получит сообщение и начнет диалог, «запустив» диалог. В этом случае ваш диалог LUIS.

person Ezequiel Jadib    schedule 09.06.2016
comment
Спасибо. Я поместил код в исходный пост. Это все содержимое моего MessagesController.cs. Я также пробовал HTTP (localhost: 3978 / api / messages) и получил ошибку 404 Not Found. - person Greg Heywood; 10.06.2016
comment
о, так ваш MessageController.cs содержит только LUISDialog? Если это так, то это основная причина проблемы. Вам нужен MessageController (веб-интерфейс), который получает сообщение. Ваш контроллер сообщений должен быть похож на этот github.com/Microsoft/BotBuilder/blob/master/CSharp/Samples/…. Вам просто нужно заменить диалог, который он запускает, вашим диалогом LUIS. - person Ezequiel Jadib; 10.06.2016

Я думаю, что в конечной точке эмулятора вы пропустили номер порта. И обычно это http (localhost), но добавьте 's' как 'https' для URL-адреса эмулятора, как показано ниже. https://localhost:3978/api/messages

person SilentCoder    schedule 10.06.2016
comment
Спасибо. Я пробовал HTTP, HTTPS, с портом, без, с / api / messages и без. - person Greg Heywood; 10.06.2016