Alexa | Alexa通信扩展
Alexa | Alexa通信扩展
Auto SDK Alexa Communication 扩展为 Alexa Auto SDK 添加了 Alexa Communication 支持,使您能够在您的平台实现中集成 Alexa-to-Alexa 呼叫、插入和通知功能。
注意:Alexa Communication 扩展必须与 Alexa Auto SDK Builder 一起使用。
目录
- 概述
- 支持的 Alexa 通信功能
- Auto SDK Alexa 通信扩展序列图
- 使用 Alexa 通信扩展安装 Auto SDK
- 使用 Alexa 通信扩展构建 Auto SDK
- 使用 Alexa 通信扩展实现 Auto SDK
- 故障排除
概述
Auto SDK Alexa Communication 扩展在Alexa Comms 库的帮助下处理 Alexa 驱动的 Alexa 通信交互。例如,当用户说“呼叫厨房”时,Alexa 语音服务云发送指令以启动与另一个 Alexa 端点的呼叫。Auto SDK Alexa Communication 扩展处理此指令并请求Alexa Comms Lib
发起呼叫。
注意:被呼叫者的身份由 Alexa Voice Service Calling Speechlet 解析。为了解析身份,必须将当前登录用户的通讯录上传到 Alexa 云。用户可以通过在手机上安装 Alexa 应用程序来执行此上传,这会将手机上的地址簿同步到 Alexa 云。
注:如果
Phone Call Control
和Alexa Communications
功能的安装和车辆的头部单元上启用,那么将优先考虑到Phone Call Control
。因此,如果目标联系人具有启用 Alexa 通信的端点,则将通过 Alexa 端点选择联系人的 PSTN。如果已解析的联系人没有 PSTN,将选择 Alexa 端点来路由呼叫。
支持的 Alexa 通信功能
Alexa 通信扩展支持以下功能:
- Alexa 到 Alexa (A2A) 呼叫
- 插入外部设备
- 对外部设备的通知
Alexa 通信扩展不支持以下功能:
- 从外部设备插入车内
- A2A 消息传递
- 从外部设备到汽车的通知
Alexa 通讯库
Alexa Comms 库提供设备上的通信实现。它使用 Alexa 通信服务来拨打和接听电话,并能够插入其他 Alexa 端点。该库还负责与其他 Alexa 端点交换媒体。目前Call audio
是唯一可以在两个 Alexa 端点之间交换的媒体。
平台实施职责
您可以通过扩展类、实现所需的行为以及向 Auto SDK Engine 注册您的实现实例来初始化 Alexa 调用功能AlexaComms
。您的实施职责包括:
- 通话音频铃声播放:平台实现负责播放通话音频铃声,在来电和去电过程中播放。因此,您必须
AudioOutput
为此通道实现 ,并将其与AudioOutputProvider
. 它们位于aace::audio
C++的命名空间或com.amazon.aace.audio
Android 上的 Java 包中。此 AudioOutput 实现必须能够播放 mp3 音频流/url。对于Android示例,请参阅:
${AAC_SDK_ROOT}/samples/android/app/src/main/java/com/amazon/sampleapp/impl/Audio/AudioOutputHandler.java
- 通话音频媒体播放:平台实现负责播放来自通话另一端的通话音频。因此,您必须
AudioOutput
为此通道实现 ,并将其与AudioOutputProvider
. 它们位于aace::audio
C++的命名空间或com.amazon.aace.audio
Android 上的 Java 包中。此AudioOutput
实现必须能够播放 PCM 16 位音频 @ 16 Khz。有关 Android 示例,请参阅:
${AAC_SDK_ROOT}/samples/android/app/src/main/java/com/amazon/sampleapp/impl/Audio/RawAudioOutputHandler.java
- 麦克风样本:平台实现负责提供在整个通话期间(对于来电和去电)从麦克风捕获的音频样本。音频样本必须是 PCM 16 位类型 @ 16 khz。有关 Android 示例,请参阅:
${AAC_SDK_ROOT}/samples/android/app/src/main/java/com/amazon/sampleapp/impl/Audio/AudioInputProviderHandler.java
Auto SDK Alexa 通信扩展序列图
以下是说明 Auto SDK Alexa Communication Extension 入站和出站呼叫工作流程的序列图。
入站呼叫工作流程
以下是入站呼叫的序列图。当用户听到来电铃声时,他们可以说“Alexa,接听电话”或“Alexa 不接听”。您还可以提供物理或 UI 按钮来接听或拒绝呼叫。当用户接听电话时,您应该拨打AlexaComms::acceptCall
。当用户拒绝呼叫时,您应该调用AlexaComms::stopCall
。当用户想挂断电话时,他们可以说“Alexa,挂断电话”,或者他们可以按下 UI 上的拒绝按钮来触发呼叫AlexaComms::stopCall
。
外呼工作流程
以下是出站呼叫的序列图。目前还没有发起呼叫的软件界面。只能通过语音发起呼叫。呼叫可以类似于入站呼叫被终止。
使用 Alexa 通信扩展安装 Auto SDK
将alexacomms-[...].zip
存档解压缩到aac-sdk/extensions/extras
目录中。
例如: unzip alexacomms-1.2.zip -d aac-sdk/extensions/extras/alexacomms
注意:如果存档已经解压缩,只需将目录移动
alexacomms
到“aac-sdk/extensions/extras”目录中。
您的aac-sdk/extensions/extras
目录结构应如下所示:
aac-sdk
└─ extensions└─ extras└─ alexacomms└─ meta-aac-alexacomms└─ packages├─ alexa-comms-[...].tar.gz (contains headers and libs for different platforms)└─ comms.tar.gz (This archive contains CallManager CapabilityAgent C++ source)└─ modules└─ platforms└─ android
使用 Alexa 通信扩展构建 Auto SDK
使用扩展程序构建您的目标alexacomms
以启用 Alexa Communications 支持。
在 Android 上使用 Alexa 通信扩展构建 Auto SDK
使用扩展程序构建您的 Android 目标alexacomms
以启用 Alexa Communications 支持。
例如:
builder/build.sh android -t androidarm extensions/extras/alexacomms
通过在初始控制台输出中查找以下行,确认 Alexa Auto SDK Builder 已添加扩展:
NOTE: Search for sub modules: /home/builder/aac/extensions/extras/alexacomms
NOTE: Adding modules: /home/builder/aac/extensions/extras/alexacomms/modules
NOTE: Adding meta layer: /home/builder/aac/extensions/extras/alexacomms/meta-aac-alexacomms
在 Linux 上使用带有 Auto SDK Alexa 通信扩展的 C++ 示例应用程序
使用 Alexa 通信扩展构建 C++ 示例应用程序
使用 Alexa Communications 扩展构建C++ 示例应用程序以启用 Alexa Communications 支持。
builder/build.sh linux -t native extensions/extras/alexacomms
使用包含的config-communication.json文件(其示例如下所示)将 Alexa Communications 配置传递给C++ 示例应用程序。默认情况下,该文件将被打包/opt/AAC/etc
。
您可能需要修改配置文件以将 更新sipCertificateFilePath
为指向 SSL 证书目录中的 Starfield Services 根证书颁发机构 - G2 根 CA 文件。
**注:**证书与目录中的C++ Sample App捆绑在一起,
samples/cpp/assets/certs
CA文件哈希为09789157.0
{"aace.alexa": {"avsDeviceSDK": {"communications": {"sipCertificateFilePath": "/etc/ssl/certs/09789157.0","inputDevice": {"driverName": "audioproxy","deviceName": "audioproxy","audioGain": 1.0,"latencyInMilliseconds": 100},"outputDevice": {"driverName": "audioproxy","deviceName": "audioproxy","audioGain": 1.0,"latencyInMilliseconds": 100}}}}
}
该latencyInMilliseconds
字段用于配置捕获/回放缓冲区长度。除非您观察到音频质量问题,否则默认值应该是可以接受的。
使用 Alexa 通信扩展运行 C++ 示例应用程序
您必须在启动 C++ 示例应用程序时指定config-communication.json文件:
$ /opt/AAC/bin/SampleApp --cbreak \--config /opt/AAC/etc/config.json \--config /opt/AAC/etc/config-communication.json \--menu /opt/AAC/etc/menu.json > SampleApp.log
一旦通过身份验证,示例应用程序就可以拨打和接收 Alexa 到 Alexa 的呼叫。尝试使用点按通话,然后说“呼叫鲍勃”。
注意:您可能需要先启用电话连接,然后才能拨打 Alexa 到 Alexa 的电话。
使用 Alexa 通信扩展实现 Auto SDK
Auto SDK Alexa Communication 扩展的入口点是AlexaComms
类。你可以在这里找到它:
- C++ : C++ 的AlexaComms 接口
- JAVA/安卓:
${AAC_SDK_ROOT}/platforms/android/aace/src/main/java/com/amazon/aace/communication/AlexaComms.java
要在您的平台实现中使用 Alexa Communication,请扩展AlexaComms
该类。Auto SDK Engine 为来自 Alexa 的呼叫状态和(可选)呼叫显示信息更改通知提供回调。
呼叫状态更改通知- 平台实现可以通过平台接口控制传入、传出或正在进行的呼叫。平台实现负责为用户提供控制呼叫的选项(例如,接听或拒绝来电)的 UI。
呼叫显示信息更改通知(呼叫者 ID) - Auto SDK 引擎调用 callerInfoChanged() 方法来传递包含呼叫者信息的序列化 JSON 对象,以便在基于屏幕的设备上显示。如果没有可用的调用者信息,该方法将传递一个空的序列化 JSON 对象。
**注意:**显示来电信息是可选的;默认平台实现不显示调用者信息。如果您在实现中显示调用者信息,则每次调用状态更改为
INBOUND_RINGING
或时,引擎都会调用 callerInfoChanged() 方法CONNECTING
。
以下是扩展类的 C++ 代码示例AlexaComms
:
#include <AACE/Communication/AlexaComms.h>class MyAlexaCommsHandler : public aace::communication::AlexaComms {void callDisplayInfo(const std::string& displayInfo) {/*** Display caller information for the call.** Typically displayInfo is available in @c CallState::CONNECTING and @c CallState::INBOUND_RINGING call states.* JSON structure:* @code{.json})* {* "displayName" : "{{STRING}}"* }* @endcode* @li displayName: The contact name to be displayed.*/}void callStateChanged(CallState state) override {// Update the UI that call state is changed.if (state == CallState::INBOUND_RINGING) {// display accept/reject ui control} else if (state == CallState::CONNECTING || state == CallState::CALL_CONNECTED) {// display stop call ui control}}...etc...// when user clicks on accept ui control direct engine to accept callthis->acceptCall();...// when user clicks on reject/stop call ui control direct engine to stop callthis->stopCall();...
};
您可以在此处找到示例 Android 代码来扩展AlexaComms
该类:
${AAC_SDK_ROOT}/samples/android/app/src/main/java/com/amazon/sampleapp/impl/Communication/AlexaCommsHandler.java
要启用 Alexa 通信功能,平台实现必须通过调用 Engine 上的方法实例化此实例并将其注册 registerPlatformInterface()
到 Engine。例如:
engine-> registerPlatformInterface( std::make_shared<MyAlexaCommsHandler>());
故障排除
- 当与 Alexa 交互以呼叫另一台设备时,您可能会收到一条错误消息,指出无法进行呼叫并稍后再试。如果
sipCertificateFilePath
配置文件config-communication.json内部无效,则可能会发生这种情况。请确保目标设备中存在Starfield Services 根证书颁发机构 - G2根 CA。
Alexa | Alexa通信扩展相关推荐
- 如何使用alexa_如何使用Alexa来帮助您入睡
如何使用alexa Having trouble dozing off? Your Amazon Echo or Alexa-enabled device can play sounds, music ...
- AWS想到办法让Alexa能在毫秒内做出回复
随着语音助理的技能越来越多样化,要处理的任务也越来越复杂,Amazon为了能让Alexa在更短的时间内,处理并完成复杂的任务,AmazonAlexa AI团队近日在美国AI协会举办的第33届研讨会中, ...
- Work with Alexa : 智能设备连接到Alexa
背景: 我想开发一款基于Amazon Alexa的智能家居设备.目前使用Alexa语音服务有两种方式:AVS Device SDK内置设备和设备连接到Alexa.本文介绍设备连接到Alexa这种方式. ...
- 从零开始,搭建 AI 音箱 Alexa 语音服务
本文来自作者 Mike 在 GitChat 上分享 「从零开始,搭建 AI 音箱 Alexa 语音服务」,「阅读原文」查看交流实录. 「文末高能」 编辑 | 哈比 一.概述 生活场景的引入: 物联网的 ...
- alexa api php,php 读取 alexa信息
php 读取 alexa信息 function Alexa($domain) { $alexa = ''; $content = get_content('http://www.alexa.com/d ...
- ALEXA站长全攻略(转)
写此文之前本拟在"ALEXA"前加一个"网站流量世界排名",可转而一想ALEXA主营业务及目前的功能也不一个专做网站流量排名的网站,更确切的说它是一个提供搜索的 ...
- 亚马逊echo中国使用_我如何编程我的第一个Amazon Alexa技能并赢得了免费的Echo Dot...
亚马逊echo中国使用 by Lorrie Pearson 洛里·皮尔森(Lorrie Pearson) 我如何编程我的第一个Amazon Alexa技能并赢得了免费的Echo Dot (How I ...
- 上周技术关注:Alexa开放搜索爬虫接口
[搜索技术; web2.0; Alexa] Alexa开放搜索爬虫 用户可以自建搜索引擎 # 搜索引擎观察家John Battelle说,每个人可以使用网络爬虫,但是收集.维护一个大级别的信息库却是非 ...
- alexa排名查询有哪些?
http://www.diannaozs.com/alexa/alexa.asp?url=huangsexiaoshuo.se600.dailiba.net http://www.pqshow.com ...
最新文章
- Spring(IOC+AOP)
- Oracle下scott用户无法登录
- ogg 故障解决一则
- Python-100 练习题 03 完全平方数
- 将以太坊封装为 ERC20
- YII2 实现后台操作记录日志
- sscanf一小用法
- 只安装oracle服务端连plsql,Oracle 不安装Oracle客户端,使用PLSQL连接Oracle服务器
- mysql怎么避免联合查询_mysql-联合查询,连接查询
- delphi 复制文件 强制覆盖_网传美国选这三家中国橱柜企业为反倾销强制应诉人...
- 利用顺序栈解决括号匹配问题(c++)-- 数据结构
- Vue.js 与 ActiveX 控件
- vue从创建到完整的饿了么(7)点击事件与页面跳转
- Fiddler4 抓包分析(基础版)
- 一个很好用的桌面取色器和一个在线取色器
- 简易的NTC-10K-3950测温
- 基于FOC矢量算法的MTPA控制在变频洗衣机上的应用
- 小程序与H5,APP有什么不同-小程序支付开发1
- 相关性搜索(自然语言处理NLP)相关资料(待更
- 国产操作系统UOS安装教程