【发布时间】:2019-07-29 01:05:24
【问题描述】:
问题在于使用 .Net Core 通过 Bot Framework 创建 Bot 应用程序。 在 .Net Framework 中,我使用 API 来创建 Bot App。在初始方法中,我传递字符串参数并从 IFrame Url 获取此值,但在 .Net Core 中,我使用 OnTurnAsync 方法并且无法覆盖此方法以将字符串参数作为“userName”传递。 我在下面分享 .Net 核心和 .Net 框架初始方法。
我正在通过 IFrame 调用机器人应用程序,例如; https://webchat.botframework.com/...&userName=test' style="width:600px; height:600px;">
那么如何将参数传递给 OnTurnAsync 方法?
.Net 框架
public async Task<HttpResponseMessage> Post([FromBody]Activity activity, string userName)
{
if (activity.Type == ActivityTypes.Message)
{
var keyword = activity.Text.ToLower().ToEnglish();
var responseAttachment = KeywordHelper.GetAttachmentResult(keyword);
if (responseAttachment != null)
{
var answer = ((HeroCard)responseAttachment.Content).Title.ToString();
conversation.Response = answer;
this.conversationService.InsertToConversation(conversation);
var connector = new ConnectorClient(new Uri(activity.ServiceUrl));
var reply = activity.CreateReply();
reply.Attachments.Add(responseAttachment);
await connector.Conversations.ReplyToActivityAsync(reply);
activity.Type = ActivityTypes.Message;
}
}
}
.Net 核心
public async Task OnTurnAsync(ITurnContext turnContext, CancellationToken cancellationToken = default(CancellationToken))
{
if (turnContext.Activity.Type == ActivityTypes.Message)
{
var userName = "userName";
var keyword = turnContext.Activity.Text.ToLower().ToEnglish();
var responseAttachment = KeywordHelper.GetAttachmentResult(keyword);
if (responseAttachment != null)
{
var answer = ((HeroCard)responseAttachment.Content).Title.ToString();
conversation.Response = answer;
this.conversationService.InsertToConversation(conversation);
var connector = new ConnectorClient(new Uri(turnContext.Activity.ServiceUrl));
var reply = turnContext.Activity.CreateReply();
}
}
}
【问题讨论】:
-
您仍然可以在 V4 中使用控制器,如以下 mvc 示例所示:github.com/Microsoft/BotBuilder-Samples/tree/master/samples/…
-
所以,我认为应该重写 OnTurnAsync 方法以从 Iframe 获取 userName 参数,但我不能。如何在初始方法中获取 userName 参数?
-
如果只需要用户名,可以从activity.From.Name中获取(userid和username是webchat会从url字符串传入activity的两个参数)。
标签: .net-core botframework bots azure-language-understanding azure-bot-service