Microsoft Bot Builder - 如何将PromptDialog发送到自定义创建的Activity?

时间:2017-10-02 23:18:56

标签: c# botframework chatbot

简而言之,主要任务是从一个用户接收消息并将其转发给另一个用户。所以我得到了以下结构:

public class ForwardDialog : IDialog<bool>
{
    public async Task StartAsync(IDialogContext context)
    {
        context.Wait(MessageReceivedAsync);
    }

    async Task MessageReceivedAsync(IDialogContext context, IAwaitable<IMessageActivity> argument)
    {
        string ServiceUrl = "http://localhost:56675";
        string OriginalMessageSenderName = "Test";
        string OriginalMessageSenderId = "TestId";
        string OriginalMessageText = "sd";
        ChannelAccount BotAccount = new ChannelAccount(
            name: "Bot", 
            id: "default-bot"
        );
        ChannelAccount UserAccount = new ChannelAccount(
            name: "User", 
            id: "default-user"
        );
        ConnectorClient ForwardClient = new ConnectorClient(new Uri(ServiceUrl));
        ConversationResourceResponse ForwardConversation = ForwardClient.Conversations.CreateDirectConversation(BotAccount, UserAccount);

        ForwardMessage.From = BotAccount;
        ForwardMessage.Recipient = UserAccount;
        ForwardMessage.Conversation = new ConversationAccount(id: ForwardConversation.Id);
        ForwardMessage.Text = $"{OriginalMessageSenderName}: {OriginalMessageText}";
        ForwardMessage.Locale = "ru-ru";

        //ForwardClient.Conversations.SendToConversation((Activity)ForwardMessage);

        PromptDialog.Text(context, PostResultAsync, "Reply", "What?", 3);
    }

    private async Task PostResultAsync(IDialogContext context, IAwaitable<string> prompt)
    {
        var result = await prompt;
        await context.PostAsync($"{result}");
        context.Wait(MessageReceivedAsync);
    }
}

SendToConversation工作正常,但我需要发送PromptDialog,这就是问题所在。我传递给PromptDialog的上下文向第一个用户发送消息,但我需要它将消息发送到第二个用户。我怎么能这样做?

0 个答案:

没有答案