语音
长老会语音应用的SDK会话. 每一次电话,长老会的Appbridge
打开一个签名的 WebSocket 第二届会议 给您的应用程序; VoiceServer 接受并运行您的处理器
与届会。 协议在 docs/session-protocol.md,完整的 SDK 向导在
docs/voice-sdk.md示例 examples/。 。 。 .
安装
$ npm install --save @fonoster/voice
示例
import { VoiceServer } from "@fonoster/voice";
// AppBridge signs every connection with the app's signing secret.
new VoiceServer({ port: 3000, signingSecret: process.env.APP_SIGNING_SECRET }).listen(
async (session) => {
await session.say("Hi there! What's your name?");
const { speech: name } = await session.gather();
await session.say(`Nice to meet you ${name}!`);
await session.say("Please enter your 4 digit pin.");
const { digits } = await session.gather({ maxDigits: 4, finishOnKey: "#" });
await session.say(`Your pin is ${digits}`);
await session.hangup();
}
);
attach(server, handler) 在已有的 HTTP 或 Express 服务器上挂载同一服务器 .
会议
| 方法 | 对 |
|---|---|
say(text | asyncIterable, options?) | 发声; 决定 { interrupted, heardText, heardMs } |
gather(options?) | 等待演讲或按键maxDigits, (中文(简体) ), finishOnKey, (中文(简体) ), timeout(中文(简体) ) |
play(url), (中文(简体) ), playDtmf(digits) | 播放媒体或 DTMF 声调 |
transfer(to, { mode }), (中文(简体) ), completeTransfer() | 冷,温暖或 refer 转让 |
hold(), (中文(简体) ), resume(), (中文(简体) ), handoff(app, payload), (中文(简体) ), hangup() | 调用控制 |
audio.onFrame, (中文(简体) ), audio.send, (中文(简体) ), audio.mark, (中文(简体) ), audio.clear | 原始调用音频 |
on(event, cb), (中文(简体) ), subscribe(events) | 转弯、部分记录、按键 |
字段 : callRef, (中文(简体) ), appRef, (中文(简体) ), from, (中文(简体) ), to, (中文(简体) ), direction, (中文(简体) ), metadata。 。 。 .
来自gRPC SDK(英语:(req, res) 处理者, VoiceResponse, (中文(简体) ), stream, (中文(简体) ), sgather, (中文(简体) ), dial{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
这些不见了,看 docs/migrating-to-sessions.md。 。 。 . @fonoster/voice/session 决心
软件包,再放一次.
会议
一通电话的会话以fonost.session.v1消息(voice-sdk S8)为基础. 动词是 方便:每个都发出一个命令,并解答事件.
仁爱: 全球类
中间
呼叫者是中转:一个转弯. user 开始没有转弯. 已定.
仁爱: 实例财产 Session
会话
一次集会放弃了目前的转折;其后转折. 已取消,而不是缓冲.
仁爱: 实例财产 Session
say( )
讲出文字,或一流的文字片段作为单词,并报告所听到的.
仁爱: 实例方法 Session
语句。 stopSay ()
切断代理: 每个待决的语句和播放解析作为中断 .
仁爱: 实例方法 Session
会话.gather ()
等待发言(turn.dested)或数字(dtmf),以先到者为准.
仁爱: 实例方法 Session
届会。 listen ()
开始聆听或改变 AppBridge 如何聆听(listen.update: 识别语言,
暗示和坚忍low, (中文(简体) ), normal 或者说 high) (中文(简体) ).
仁爱: 实例方法 Session
会话. 订阅()
请求选入事件:"turn.present","transcript.".
仁爱: 实例方法 Session
转移()
调用; 当 AppBridge 结束会话时, 以 理由 调用 .
仁爱: 实例方法 Session
交接器( )
完成待定的取暖转移:代理机离开,呼叫机和新方停留. 决定:
当会话以理由转移结束时; 用会话错误拒绝
(单位:千美元)transfer_not_answered),当新党尚未答复,这就留下了转移
待决:等待 transfer.answered {\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}再打个电话 {\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}我记得.
仁爱: 实例方法 Session
页 次
用有效载荷将电话交给另一个应用程序;当本届会议结束时,就决定了.
仁爱: 实例方法 Session
挂起( )
挂起; 会话结束后决定 . failure 结束调用为调用记录失败
(@ 内部: 留给长老会自己的应用( Autopilot); AppBridge 忽略了他人的应用).
仁爱: 实例方法 Session
页:1
在呼叫记录中添加一个注释(record.note).
仁爱: 实例方法 Session
内部: 为长老会自己的应用软件(Autopilot)预留;不是公共SDK的一部分,可能改变.
页:1
将模型符号用法添加到调用中(usage.report, add-usage-metering).
仁爱: 实例方法 Session
内部:预留给长老会自己的"自动驾驶";AppBridge拒绝其他应用.
答题( )
即刻决定:AppBridge响应连接(voice-sdk S2)的呼叫.
仁爱: 实例方法 Session
收到( )
从套接字中提供一个框架.
仁爱: 实例方法 Session
会议闭幕()
插座关了.
仁爱: 实例方法 Session
会话. command ()
发送唯一答案为可能错误的命令( 以会话错误记录) .
仁爱: 实例方法 Session
语法
应用程序拥有中断( appbridge B22) : 当呼叫者开始谈论中断时 说或玩,SDK以清晰的方式切断它;一个无间断的不断播放.
仁爱: 实例方法 Session
语音服务员
接受通过 WebSocket 的 Appbridge 会话并运行每次会话的处理器 (voice-sdk,"VoiceServer通过WebSocket接受AppBridge会话").
仁爱: 全球类
语音服务器. listen ()
启动独立的服务器。 决心一旦它听.
仁爱: 实例方法 VoiceServer
语音服务器. attach ()
挂载在 HTTP 服务器上的挂载( 包括 Express): 会话到达 path。 。 。 .
仁爱: 实例方法 VoiceServer
语音服务器. handle Update ()
处理一个升级请求:验证签名,然后运行会话.
仁爱: 实例方法 VoiceServer
会话错误
命令失败: AppBridge 已发送 error 与 relatesTo 设置到命令的id.
仁爱: 全球类
会话结束错误
会话在命令待决时结束(或致命错误已到来).
仁爱: 全球类