
微软Bot框架直线JS客户端
用于 网络聊天 因此(延长) 模拟器,网络聊天频道,以及 Azure 瓶装服务。 。 。 .
财务问题
这是谁的?
正在构建 Bot Framework JavaScript 客户端但不想使用的人 网络聊天。 。 。 .
如果您目前使用WebChat,您不需要做任何修改,因为它包含了这个软件包.
这有什么好笑的 subscribe() 下面的样本中的方法?
这个库不使用回调或承诺,而是使用可观察操作处理合成操作. 试试看,你会喜欢的! 详细情况请查看 RxJS 软件。 。 。 .
我可以用吗 类型脚本? 吗?
当然.
这个图书馆准备多少?
这是一个由微软官方支持的库,被认为基本完成. 未来的变化(除了支持未来更新直接行协议外)可能仅限于错误修正,性能改进,教程,和样本. 这里丢失的大块 是单位测试.
虽然如此,公共API仍然有变化.
为什么文库没有检测出Web Socket断开?
在iOS/iPadOS上,当网络从Wi-Fi变为蜂窝时 WebSocket 对象将被停止而不发生任何错误。 如果没有任何额外的援助,这一点是无法察觉的,也是行不通的。 这个问题与一个名为"NSURL Session WebSocket"的实验性专题有关. 该功能默认启用于iOS/iPadOS 15并上.
命名选项 networkInformation 可用于帮助库发现任何连接问题。 该选项基于 W3C 网络信息 API 它应至少执行两个成员:
- A 类
type属性 以显示当前网络类型- 当
type实值"offline",网络不可用,也不会连接
- 当
- A 类
change事件 应在type财产变更
然而,iOS/iPadOS上的Safari 不支持 W3C 网络信息 API。由网络开发者实施 NetworkInformation 混合填充剂.
检测网络类型变化的一个有效方法是订阅 服务器事件 来源. 服务将每30秒发送一次信息。 如果网络类型被改变, 且当前网络类型已无法使用, 连接将提前关闭 error 活动将发送至 EventSource 举个例子 一经收到 error 活动 NetworkInformation.type 改为 "offline"。浏览器将自动重试 Server- Sent Events 连接。 一经收到 open 组合填充应更改 type 返回到 "unknown"。 。 。 .
如果图书馆被使用在一个本地的iOS/iPadOS应用程序中,资源密集程度较低的解决方案将部分实施 网络信息 API 使用 NWPathMonitor当网络发生变化时 NetworkInformation 实例应更新 type 属性 根据网络类型和发送a change 事件。 。 。 .
如何从源头构建
- 克隆这个还原
npm installnpm run build(或npm run watch以每次变化重建,或npm run prepublishOnly生产)
如何在应用程序中包含
有几种方式:
- 从零开始构建并包含其中之一
/directLine.js(用rxjs包装)或lib/directline.js在您的应用程序中 npm install botframework-directlinejs
从节点环境中使用
这个库使用RxJs/Ajax可观察器,用于DOM环境. 这并不意味着你不能同时使用它 从节点,你只需要做一些额外的事情:
npm install --save ws xhr2- 在您主应用程序文件上方添加以下内容 :
global.XMLHttpRequest = require('xhr2');
global.WebSocket = require('ws');
如何创建和使用直线对象
获取您的机器人安全证书 :
- 如果你还没有, 注册您的机器人。 。 。 .
- 添加直线线( N)不在网络聊天(d) 频道,并生成直线密钥。 确保直接行3.0启用.
- 对于测试,您可以使用您的直线密钥作为安全标志, 但是对于生产, 您可能想要将该密钥交换为直线所详述的托肯 文档。 。 。 .
创建直线对象 :
import { DirectLine } from 'botframework-directlinejs';
// For Node.js:
// const { DirectLine } = require('botframework-directlinejs');
var directLine = new DirectLine({
secret: /* put your Direct Line secret here */,
token: /* or put your Direct Line token here (supply secret OR token, not both) */,
domain: /* optional: if you are not using the default Direct Line endpoint, e.g. if you are using a region-specific endpoint, put its full URL here */
webSocket: /* optional: false if you want to use polling GET to receive messages. Defaults to true (use WebSocket). */,
pollingInterval: /* optional: set polling interval in milliseconds. Defaults to 1000 */,
timeout: /* optional: a timeout in milliseconds for requests to the bot. Defaults to 20000 */,
conversationStartProperties: { /* optional: properties to send to the bot on conversation start */
locale: 'en-US'
}
});
机器人的邮政活动:
directLine
.postActivity({
from: { id: 'myUserId', name: 'myUserName' }, // required (from.name is optional)
type: 'message',
text: 'a message for you, Rudy'
})
.subscribe(
id => console.log('Posted activity, assigned ID ', id),
error => console.log('Error posting activity', error)
);
您也可以通过提供活动中合适的字段来发布信息,并发布附件,以及事件等非信息活动.
听从机器人发送的活动:
directLine.activity$.subscribe(activity => console.log('received activity ', activity));
您可以在即将到来的活动中使用 RxJS 运算符 。 只查看信件活动 :
directLine.activity$
.filter(activity => activity.type === 'message')
.subscribe(message => console.log('received message ', message));
直接行将帮助客户端发送每一次发送活动的复制件,所以一个常见的规律是过滤在 from数字 :
directLine.activity$
.filter(activity => activity.type === 'message' && activity.from.id === 'yourBotHandle')
.subscribe(message => console.log('received message ', message));
监视连接状态
订阅其中之一 postActivity 或者说 activity$ 将启动连接机器人的进程。 您的应用程序可以监听连接状态并作出适当的反应 :
import { ConnectionStatus } from 'botframework-directlinejs';
directLine.connectionStatus$.subscribe(connectionStatus => {
switch (connectionStatus) {
case ConnectionStatus.Uninitialized: // the status when the DirectLine object is first created/constructed
case ConnectionStatus.Connecting: // currently trying to connect to the conversation
case ConnectionStatus.Online: // successfully connected to the converstaion. Connection is healthy so far as we know.
case ConnectionStatus.ExpiredToken: // last operation errored out with an expired token. Your app should supply a new one.
case ConnectionStatus.FailedToConnect: // the initial attempt to connect to the conversation failed. No recovery possible.
case ConnectionStatus.Ended: // the bot ended the conversation
}
});
重新连接到对话
如果你的应用程序通过传递一个符号创建了直线对象,直线将每15分钟刷新一个符号.
如果客户失去连通性(例如关闭膝上型计算机,不支付互联网接入费,进入隧道), connectionStatus$
将更改为 ConnectionStatus.ExpiredToken。您的应用程序可以从它的服务器上请求一个新的代号,它应该呼叫
页:1 重新连接 API (英语).
由此而来的对话对象可以被app传递到DirectLine.
var conversation = /* a Conversation object obtained from your app's server */;
directLine.reconnect(conversation);
恢复已有的对话
当使用有 WebChat 的 DirectLine 时,关闭当前标签或刷新页面在多数情况下会创建一个新的对话. 您可以恢复已有的对话, 以使用户保持相同的上下文 .
当使用秘密时 您可以通过下列方式恢复对话:
- 将对话符(在 常设 地点,如本地存储)
- 在创建 DirectLine 对象和密件的同时将此值还原
import { DirectLine } from 'botframework-directlinejs';
const dl = new DirectLine({
secret: /* SECRET */,
conversationId: /* the conversationid you stored from previous conversation */
});
使用符号时 您可以通过下列方式恢复对话:
- 将对话符和你的纪念物 常设 地点,如本地存储)
- 给DirectLine重新连接API自己打电话,以获得更新的代号和一个流线器
- 使用 ConversationId、 Token 和 StreamUr 创建直线对象
import { DirectLine } from 'botframework-directlinejs';
const dl = new DirectLine({
token: /* the token you retrieved while reconnecting */,
streamUrl: /* the streamUrl you retrieved while reconnecting */,
conversationId: /* the conversationid you stored from previous conversation */
});
获取直接行缓存的任何历史 : 您可以使用水印获取历史 : 你可以看到水印是一个 活动“ 书签”。恢复方案将重放您指定的水印中的所有对话活动.
import { DirectLine } from 'botframework-directlinejs';
const dl = new DirectLine({
token: /* the token you retrieved while reconnecting */,
streamUrl: /* the streamUrl you retrieved while reconnecting */,
conversationId: /* the conversationid you stored from previous conversation */,
watermark: /* a watermark you saved from a previous conversation */,
webSocket: false
});
捐款
该项目欢迎各方的贡献和建议。 大多数捐款要求您同意 撰稿人许可协议(CLA)宣布,你有权并且实际上确实给了我们 有权使用您的贡献。 详情请访问 https://cla.microsoft.com (中文(简体) )。 。 。 .
当您提交拉动请求时, CLA 机器人会自动确定您是否需要提供 a CLA并适当装饰公关(例如标签、评论)。 只要听从指示 由机器人提供。 你只需要用我们的CLA 一次就能完成.
当您提交拉动请求时, CLA 机器人会自动确定您是否需要提供 a CLA并适当装饰公关(例如标签、评论)。 只要听从指示 由机器人提供。 你只需要用我们的CLA 一次就能完成. 该项目通过了 Microsoft 开源行为守则。 。 。 . 更多信息见 《行为守则》 或者说 联系人 打开码@ microsoft.com 并附上任何其他问题或评论.
报告安全问题
安全问题和错误应通过电子邮件私下向微软安全反应中心报告 安全性@ microsoft.com您应在24小时内收到回复。 如果你出于某种原因没有,请通过电子邮件跟进,以确保我们收到你的原始信息。 进一步信息,包括 MSRC PGP 软件 键,可在 安全技术中心。 。 。 .
版权 (c) 微软公司。 版权所有.