Ich versuche, einen einfachen Bot zu schreiben, der LUIS verwendet, aber nach einem Update scheint ein Problem zu haben.Botframe Emulator und 404 Fehler
Also bevor ich den Botbuilder auf 1.1 aktualisierte, hatte ich Probleme, wo Luis.Models nicht gefunden werden konnte. Nach dem Upgrade und Auflösen einer coding error und Entfernen von Microsoft.Bot.Connector.Utilities kann ich erfolgreich kompilieren und ausführen, aber ich kann keine Verbindung über den Emulator herstellen.
Dies ist der Code, den ich verwende.
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);
}
}
Als ich das Projekt ausführen, startet es ohne Fehler, und ich die Webseite erhalten, die sagt:
MYBot Beschreiben Sie Ihre Bot hier und Ihre Nutzungsbedingungen usw. Besuch Bot-Framework registrieren Dein Bot. Wenn Sie es registrieren, denken Sie daran, bot der Endpunkt https://your_bots_hostname/api/messages
zu setzen, wenn ich den Emulator laufen zu https://localhost/api/messages zeigt, Retuns es „ein Fehler beim Senden der Anforderung“.
JSON ist hier:
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()
Ich habe gerade HTTP auch versucht (und nicht HTTPS).
Fehle ich ein grundlegendes Stück Code? Ohne LUIS würde ich "public class MessagesController: ApiController" verwenden. Nein, ich versuche "öffentliche Klasse Mybot: LuisDialog
Können Sie den Code Ihres MessageControllers posten? Sie benötigen den MessageController auch dann, wenn Sie LUIS verwenden. –
Danke. Ich habe den Code in den ursprünglichen Beitrag eingefügt. Das ist der gesamte Inhalt meiner MessagesController.cs. –