2017-08-14 10 views
0

フォームの途中でダイアログを呼び出す方法は? アドレスを取得するためにロケーションダイアログhttps://github.com/Microsoft/BotBuilder-Locationを呼び出したいと思います。おかげさまで FormFlowからのダイアログの呼び出し方法

[Serializable] 
public class IssueShares 
{ 
    [Prompt("Please enter holder name:")] 
    public string HolderName; 
    [Prompt("Please enter holder address:")] 
    **[Call(typeof(AddressDialog))]** 
    public Address Address; 

    [Prompt("Enter shares class:")] 
    public string SharesClass { get; set; } 
    [Prompt("How many shares your issue?")] 
    [Describe("Number of shares")] 
    public int NumberOfShares { get; set; } 
} 

[Serializable] 
public class AddressDialog : IDialog<Address> 
{ 
    public Task StartAsync(IDialogContext context) 
    { 
     context.Wait(MessageReceived); 
     return Task.CompletedTask; 
    } 

    private async Task MessageReceived(IDialogContext context, IAwaitable<object> result) 
    { 
     // some logic 
     context.Done(address); 
    } 
} 
+0

これは、現在の機能ではありません。 – JasonSowers

答えて

0

属性宣言に基づいた解決策が期待されていますか、または通常のコードが受け入れられますか?

Microsoftは、シーケンスまたはスタックとして呼び出されたダイアログチェーンを提供しています。

以下のSOの質問に受け入れられた回答はあなたの質問に私が考えると答えます。ここで

Calling Forms from Dialogs

その答えからコードの抜粋です:

var myform = new FormDialog<CreateNewLeadForm>(new CreateNewLeadForm(), CreateNewLeadForm.BuildForm, FormOptions.PromptInStart, null); 

context.Call<CreateNewLeadForm>(myform, FormCompleteCallback); 

別のSOの質問は、より一般的に主題を説明します。

Handling multiple dialogs in Microsoft bot framework

+0

ありがとうございます。最初のコードサンプルはDialogからFormを呼び出す方法を示しています。 FormからDialogを呼び出す必要があります。属性ベースのソリューションは私の提案です – Ma3yTa

関連する問題