Логи чата с использованием Middleware - PullRequest
0 голосов
/ 07 января 2019

Я включил связующее ПО для записи чатов в базе данных Firebase. Теперь я могу вызвать промежуточное программное обеспечение один раз после того, как пользователь отправит некоторый текст боту, а затем после того, как бот отправит данные пользователю. В предыдущей версии Bot Framework v3 полезная нагрузка активность изменит текст message.text и с и на как пользователь-бут / бот-пользователь . Но теперь в каркас бота v4 , когда бот отправляет сообщение / ответ пользователю, я не могу найти данные, отправленные где-либо в полезной нагрузке. Есть ли способ сохранить данные от бота-пользователя. Пожалуйста, предложите мне любые идеи.

1 Ответ

0 голосов
/ 07 января 2019

Если вы хотите, чтобы посередине действий отправлялись ботом от части промежуточного программного обеспечения, вам нужно подключиться к ITurnContext::OnSendActivities следующим образом:

public class MyActivityLoggingMiddleware : IMiddleware
{
    public async Task OnTurnAsync(ITurnContext turnContext, NextDelegate next, CancellationToken cancellationToken = default(CancellationToken))
    {
        // log incoming activity from turnContext.Activity here

        // Hook the turn context's OnSendActivities
        turnContext.OnSendActivities(HandleSendActivities);

        await next(cancellationToken);
    }

    private async Task<ResourceResponse[]> HandleSendActivities(ITurnContext turnContext, List<Activity> activities, Func<Task<ResourceResponse[]>> next)
    {
        // log activities being sent here

        return await next();
    }
}
...