0
我是Azure Bot編程(C#)的新手,無法在此主題上找到好的文章。從Azure Bot調用WebAPI
我想讓用戶'訂閱'使用Bot的郵件列表。我建立了一個Form對話框和Form Flow。它要求用戶提供他們的電子郵件地址。
我需要做的是發佈到外部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