Ich benutze Bot Framework und AzureAuthDialog, um den Benutzer zu authentifizieren.So leiten Sie die Nachricht des Benutzers zur Authentifizierung weiter
Der Bot fragt zuerst den Benutzer, was er will. Wann immer der Benutzer eine Nachricht schreibt, überprüfen wir, ob er authentifiziert ist oder nicht. Wenn wir feststellen, dass er nicht authentifiziert ist, möchten wir ihn bitten, sich zu authentifizieren. Sobald er die Authentifizierung abgeschlossen hat, möchte ich seine Anfrage von vor der Authentifizierung weiter bearbeiten.
Auf der anderen Seite, was derzeit geschieht ist, dass, nachdem der Benutzer authentifiziert, verlieren wir die Benutzer Nachricht. Hier ist der Code, siehe die Kommentare inline mehr verstehen:
public class IntentHandler : LuisDialog<object>
{
protected override async Task MessageReceived(IDialogContext context, IAwaitable<IMessageActivity> item)
{
if (!await context.IsUserAuthenticated(m_resourceId))
{
// this has the user's message
var message = await item;
// The next thing that is called here is ResumeAfterAuth function, but it does not have the user's message anymore
await context.Forward(new AzureAuthDialog(m_resourceId), ResumeAfterAuth, message, CancellationToken.None);
}
else
{
await base.MessageReceived(context, item);
}
}
private async Task ResumeAfterAuth(IDialogContext context, IAwaitable<string> item)
{
// this does not have the users's message, it only includes "User is loged in"
var message = await item;
await context.PostAsync(message);
PrivateTracer.Tracer.TraceInformation($"User {context.GetUserMail()} signed in");
await context.PostAsync(c_welcomeQuestion);
}
}
Jede Idee, wie die Benutzer Nachricht zu übergeben aus der Zeit vor der Authentifizierung? Ich weiß, ich kann die Nachricht des Benutzers in einem Feld auf MessageReceived enter code here
speichern, aber das scheint zu hässlich. Gibt es eine andere Art und Weise?
Ist AzureAuthDialog von AuthBot oder ist benutzerdefinierte eine von Ihnen erstellt? –
Es ist von Auth bot –