0
私はAzure Botプログラミング(C#)を初めて使用しています。このトピックに関する良い記事は見つかりません。Azure BotからWebAPIを呼び出す
ボットを使用してメーリングリストにユーザーが「購読する」ことを許可します。フォームダイアログとフォームフローを構築します。ユーザーに電子メールアドレスを要求します。
私は外部WebAPI(json)に投稿し、応答を得て応答を処理する必要があります。
ボットからWebAPIを呼び出す方法についていくつかの指摘をいただけますか?
public async Task Subscribe(IDialogContext context, IAwaitable<IMessageActivity> activity, LuisResult result)
{
context.Call(SubscribeForm.BuildFormDialog(FormOptions.PromptInStart), SubscribeFormComplete);
}
private async Task SubscribeFormComplete(IDialogContext context, IAwaitable<SubscribeForm> result)
{
try
{
var form = await result;
if (form != null)
{
await context.PostAsync("Thanks for subscribing! You can always remove yourself by typing unsubscribe.");
}
else
{
await context.PostAsync("Form returned empty response!");
}
}
catch (OperationCanceledException)
{
await context.PostAsync("I am sorry you decided not to subscribe! If you change your mind just type 'subscribe' again.");
}
context.Wait(this.MessageReceived);
}
[Serializable]
public class SubscribeForm
{
[Prompt("What is your email address?")]
[Required()]
[DataType(DataType.EmailAddress)]
public string EmailAddress { get; set; }
public static IForm<SubscribeForm> BuildForm()
{
// Builds an IForm<T> based on BasicForm
return new FormBuilder<SubscribeForm>()
.Message("We often send out updates on new features. We don't spam. You can type 'quit' to cancel this.")
.Build();
}
public static IFormDialog<SubscribeForm> BuildFormDialog(FormOptions options = FormOptions.PromptInStart)
{
// Generated a new FormDialog<T> based on IForm<BasicForm>
return FormDialog.FromForm(BuildForm, options);
}
}
なぜそれが違うのでしょうか?あなたは通常どおりリクエストを行うことができます。 – stuartd
ボットとフォームフローには、「スタック」とそれらに親子のニュアンスがあります。 WebAPI呼び出しのコードを配置する場所に関する提案を探してください。例えば、formcompletedメソッドや他の場所で、そして非同期とコールバックをどう扱うか。 – user3637002