2016-08-31 12 views
1

BuildFormDelegateパラメータ(静的メソッド)を渡しているFormDialogを使用してフォームを構築しています。この方法では、ユーザーデータを取得するためのコンテキストが必要です。Microsoft Botの現在のコンテキストを取得する方法

ユーザデータは、拡張機能を使用して記述されたコンテキストの一部として保存されている次のよう

public static async Task<string> GetAccessToken(this IBotContext context, string resourceId) 

Iは、フォームコンテキストを呼び出す:

var calendarform = new FormDialog<CalendarInput>(new CalendarInput(), MakeCalendarForm, FormOptions.PromptInStart, result); 
context.Call<CalendarInput>(calendarform, CalendarFormComplete); 

IはMakeCalendarFormGetAccessTokenメソッドを呼び出す必要が(引数をとらない)。どうすればこれを達成できますか?

+0

'MakeCalendarForm'とは何ですか?内部で 'GetAccessToken'を呼び出すのを止めるのは何ですか? – Blorgbeard

+1

MakeCalendarFormは静的メソッドです。 [リンク](http://mayoster.blogspot.in/2016/05/bot-builder-formflow.html)のBuildFormメソッドに似ています。このメソッドでGetAccessTokenメソッドを呼び出すためのコンテキストは使用できません。 – Aparna

+0

また、GetAccessTokenは非同期メソッドです。 IForm を返すMakeCalendarFormから呼び出すことはできません – Aparna

答えて

1

フォームを呼び出す前にGetAccessTokenを呼び出して、結果のトークンをパラメータとして渡して、作成しているFormDialogに渡すCalendarInput状態に渡すことができます。何かのように

var token = await context.GetAccessToken(); 
var calendarform = new FormDialog<CalendarInput>(new CalendarInput(token), MakeCalendarForm, FormOptions.PromptInStart, result); 

ただし、フォームのコンテキストでトークンが必要と思われるのは奇妙です。あなたは何をしようとしているのですか?

+0

ありがとうございます!これはうまくいった。フォームのフィールドのオプションをWebサービスから取得する必要があるため、トークンが必要でした。 – Aparna

+0

素晴らしい!可能であれば、フォームを呼び出す前にオプションを取得し、フォームの状態に渡します(アクセストークンを使用している場合) –

+0

答えとしてマークしてください –

関連する問題