在MS BOT框架中启用Directline

时间:2018-01-30 03:40:49

标签: asp.net-mvc botframework microsoft-cognitive direct-line-botframework

1)我为我的客户端应用程序创建了一个REST API,并在API Management中注册了(用于获取用户特定数据)

2)我使用LUIS在Azure门户中创建了一个BOT WEB APP,它工作正常(我添加了示例Intents / Utterance)

3)在LUIS应用程序中使用REST API作为Intent条件之一 在BOT模拟器和Azure门户中也测试了上述内容。 (在调用函数中硬编码用户信息)

现在我想在我的MVC客户端应用程序中配置BOT,并根据登录的用户信息传递用户特定信息。我阅读了以下文章以启用directline API。仍在寻找更好的资源。

Connect BOT using Directline API

DirectLine Auth

2 个答案:

答案 0 :(得分:0)

所以基本上你的问题是在Web应用程序中实现bot接口。一种选择是使用WebChat作为渠道:https://github.com/Microsoft/BotFramework-WebChat

开源网络聊天控件使用Direct Line API与您的机器人进行通信,该API允许在客户端和机器人之间来回发送消息。只需添加文档中提到的<iframe>标记,即可将其嵌入到您的网络应用中。在此处查看更多信息:https://docs.microsoft.com/en-us/bot-framework/bot-service-design-pattern-embed-web-site

否则正如您所说的那样是使用Direct Line API并在MVC客户端APP中为此API实现网络层。这将负责构建消息并将其发送到bot API,并接收它们并将其用于相应的UI需求。我个人建议您使用WebSockets协议,以便在您的机器人之间建立双向通信,避免进行HTTP长轮询。请在此处查看:https://docs.microsoft.com/en-us/bot-framework/rest-api/bot-framework-rest-direct-line-3-0-concepts

答案 1 :(得分:0)

  

现在我想在我的MVC客户端应用程序中配置BOT,并根据登录的用户信息传递用户特定信息。

我正在使用以下代码示例在我的网站中嵌入bot并将用户特定信息传递给bot,这对我有用,你可以参考它。

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Test</title>
    <link href="https://cdn.botframework.com/botframework-webchat/latest/botchat.css" rel="stylesheet" />
    <script src="https://cdn.botframework.com/botframework-webchat/latest/botchat.js"></script>
</head>
<body>
    <div> 
        <div id="mybot"/>
    </div>
</body>
</html>
<script>
    BotChat.App({
        directLine: { secret: '{your_directline_secret}' },
        //you can dynamically retrieve the logged in user info in your mvc View
        //and pass thoes info to your bot
        user: { id: '1234', firstname: '{your_fname}', lastname: '{your_lname}'},
        bot: { id: '{your_botid}' },
        resize: 'detect'
    }, document.getElementById("mybot"))
</script>

测试结果:

enter image description here

使用以下代码段从bot app中的Activity对象中提取用户信息。

if (activity.From.Properties["firstname"] != null)
{
    var fname = activity.From.Properties["firstname"].ToString();
}