Шаблон Azure Bot - BotApplication - PullRequest
0 голосов
/ 23 июня 2018

Я скачал шаблон бота Azure. Прямо сейчас мой бот работает и отвечает на эхо того, что я сказал, и сколько символов у него было, когда я запускал его с помощью эмулятора бот-фреймворка. но я хочу, чтобы мой бот начал разговор. Как я могу это сделать? Я хочу, чтобы бот сначала сказал привет, независимо от ввода пользователя. метод "post async" печатает сообщение в чате только после получения ввода от пользователя.

код:

namespace BotApplication1.Dialogs
{
    [Serializable]
    public class RootDialog : IDialog<object>
    {
        public Task StartAsync(IDialogContext context)
        {
            Microsoft.Bot.Builder.Dialogs.Internals.IBotToUser($"Hi! Please type in a name of a public figure!");//compile time error
            context.PostAsync($"Hello user");//prints the "hello user" only after user input
            context.Wait(MessageReceivedAsync);

            return Task.CompletedTask;
        }

        private async Task MessageReceivedAsync(IDialogContext context, IAwaitable<object> result)
        {
            var activity = await result as Activity;

            // Calculate something for us to return
            int length = (activity.Text ?? string.Empty).Length;

            // Return our reply to the user
            await context.PostAsync($"You sent {activity.Text} which was {length} characters");

            context.Wait(MessageReceivedAsync);
        }
    }
}

любая помощь? если не здесь то где спросить ???? пожалуйста! * * 1006

спасибо

Hadas

1 Ответ

0 голосов
/ 25 июня 2018

Вы должны добавить приветственное сообщение в dialogUpdate в MessagesController , а не в RootDialog.

Если ваш бот получает действие разговор-обновление, указывающее, что пользователь присоединился к беседе, вы можете выбрать ответ, отправив приветственное сообщение этому пользователю.

Демонстрационный код.

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

        // Note: Add introduction here:
        IConversationUpdateActivity update = message;
        var client = new ConnectorClient(new Uri(message.ServiceUrl), new MicrosoftAppCredentials());
        if (update.MembersAdded != null && update.MembersAdded.Any())
        {
            foreach (var newMember in update.MembersAdded)
            {
                if (newMember.Id != message.Recipient.Id)
                {
                    var reply = message.CreateReply();
                    reply.Text = $"Welcome {newMember.Name}!";
                    client.Conversations.ReplyToActivityAsync(reply);
                }
            }
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...