精灵小程序是在支付宝小程序的基础上,增加了语音、视觉等能力。小程序基础的API,请参考:支付宝小程序的API

以下是天猫精灵扩展的 API:

playTTS

  • API: my.tg.playTTS
  • 功能:播放 TTS
  • 入参: | 属性 | 类型 | 必填 | 说明 | | —- | —- | —- | —- | | content | String | 是 | tts 播报的内容, string 类型 | | openMic | Boolean | 否 | 是否在播报结束后开麦,默认 false |
  • 使用示例:
    1. my.tg.playTTS({
    2. content: '请问你要选第几个',
    3. openMic: true
    4. });

nlpRequest

  • API: my.tg.nlpRequest
  • 功能:模拟语音请求
  • 入参: | 属性 | 类型 | 必填 | 说明 | | —- | —- | —- | —- | | text | String | 是 | 模拟语音请求的内容 |
  • 使用示例:
    1. my.tg.nlpRequest({
    2. text: "今天天气",
    3. });

getGenieUserInfo

  • API: my.call(“getGenieUserInfo”)
  • 功能:获取精灵账号信息
  • 使用示例:
  1. my.call('getGenieUserInfo', function(result) {
  2. my.alert({
  3. content: JSON.stringify(result) // nickName和userOpenId
  4. })
  5. })

getGenieSerialNo

  • API: my.call(“getGenieSerialNo”)
  • 功能:获取精灵的设备序列号
  • 使用示例:
  1. my.call('getGenieSerialNo', function(result) {
  2. my.alert({
  3. content: JSON.stringify(result) //serialNo
  4. })
  5. })
  6. result:
  7. code: "0" 成功, "-1" 取消授权
  8. {"code":"0", "serialNo":"GIYPQ8KFTOHUAEPN"}

注:414版本开始支持,421版本有机器获取此接口异常,升级到423功能正常。

keepScreenOn

  • API: my.call(“keepScreenOn”)
  • 功能:设置小程序屏幕是否保持常亮
  • 参数
属性 类型 必填 说明
enable Boolean 默认小程序应用会保持屏幕常亮,true为保持屏幕常亮,false为关闭屏幕常亮

使用示例:

  1. my.call('keepScreenOn', {
  2. "enable": "false" // 默认小程序应用会保持屏幕常亮,"true"为保持屏幕常亮,"false"为关闭屏幕常亮
  3. },function(result) {
  4. my.alert({
  5. content: JSON.stringify(result)
  6. })
  7. })

返回值示例:

  1. {
  2. "code":"0", // code:0 成功
  3. "msg":"success"
  4. }

hideNavigationBar

  • API:my.call(‘hideNavigationBar’)
  • 功能:隐藏顶部导航栏

showNavigationBar

  • API: my.call(‘showNavigationBar’)
  • 功能:显示顶部导航栏

sendKeyEvent

  • API: my.call(“sendKeyEvent”)
  • 功能:模拟物理按键
  • 入参: | 属性 | 类型 | 必填 | 说明 | | —- | —- | —- | —- | | keyCode | String | 是 | 键值,当前仅支持 BACK、HOME 两种键值 | | | | | |
  • 使用示例:
    1. my.call("sendKeyEvent", {"keyCode": "BACK"})

useSystemSkill

  • API: my.call(“useSystemSkill”)
  • 功能:使用系统自带技能
  • 入参: | 属性 | 类型 | 必填 | 说明 | | —- | —- | —- | —- | | skillName | String | 是 | 系统内置技能的名字,目前可选值有:chat |

当前系统内置的技能说明:

skillName 说明
chat 沉寂式对话模式,将拦截所有的语音指令,不会跳出当前的技能。 对于“退出”“返回”这些指令,小程序自行可自行使用sendKeyEvent来处理
  • 使用示例
  1. 在 Page的onShow 方法中,设置技能配置 ```javascript Page({

    onShow() { my.call(‘useSystemSkill’, { skillName: ‘chat’ }) },

});

  1. 2. page onVoiceEvent 中语音操作的指令:
  2. ```javascript
  3. Page({
  4. onShow() {
  5. my.call('useSystemSkill', {
  6. skillName: 'chat',
  7. })
  8. },
  9. //默认的语音指令回调
  10. onVoiceEvent(event){
  11. my.alert({content: "onVoiceEvent = " + JSON.stringify(event)});
  12. },
  13. });
  1. 假设此时用户说 “天猫精灵,风和日丽” , onVoiceEvent 回调中的 event 的数据格式如下,其中的 query 就是原生的 ASR
    1. {
    2. "command":"NluResult",
    3. "domain":"AliGenie.Text",
    4. "param":{
    5. "domain":"小程序技能chat",
    6. "intent":"sys.fallback",
    7. "query":"风和日丽",
    8. "slots":[]
    9. }
    10. }

useCustomSkill

  • API: my.call(“useCustomSkill”)
  • 功能:使用自定义技能
  • 入参: | 属性 | 类型 | 必填 | 说明 | | —- | —- | —- | —- | | skillName | String | 否 | 技能的名字,默认值为小程序的 appid | | secretKey | String | 是 | 技能的 secretKey,从技能开放平台创建的技能中获取 | | pageId | String | 否 | 指定页面 id,和技能开放平台中的页面意图配置相匹配,会优先使用页面绑定的意图 |
  • 使用示例
  1. 在 Page 的 onShow 方法中,设置技能配置 ```javascript Page({

    onShow() { my.call(‘useCustomSkill’, {

    1. secretKey: 'your secretKey',
    2. pageId: 'pages/index/index'

    }) },

});

  1. <a name="startNativeApp"></a>
  2. ## startNativeApp
  3. - API: my.call('startNativeApp')
  4. - 功能:启动 Native 应用
  5. - 参数
  6. | 属性 | 类型 | 必填 | 说明 |
  7. | --- | --- | --- | --- |
  8. | uri | String | 否 | |
  9. | 启动 Activity 的 Uri | | | |
  10. | action | String | 否 | 启动 Activity 时,设置的 action 参数,默认为"android.intent.action.VIEW" |
  11. | param | String | 否 | 传给要启动的Activity的Intent extra参数. 子参数将通过 putExtra 方式添加进 Intent 中,可通过 getStringExtra()方法获取,(注意: 所有子参数类型必须都是 String 类型) |
  12. - 使用示例:
  13. ```javascript
  14. my.call('startNativeApp', {
  15. // 通过URI的方式 start Activity: 启动通讯录
  16. uri: 'genie://com.alibaba.ailabs.genie.contacts/page/home',
  17. param: {// 可选,传入intent中的extra中的参数,注意必须为String类型
  18. "extra1": "value1",
  19. "interger": "1",
  20. "extra2": "Hello native app",
  21. }
  22. },
  23. function(result) {
  24. my.alert({
  25. content: JSON.stringify(result)
  26. })
  27. })

getGenieDeviceInfo

  • API: my.call(“getGenieDeviceInfo”)
  • 功能:获取设备信息
  • 使用示例:
    1. my.call('getGenieDeviceInfo', function(result) {
    2. my.alert({
    3. content: JSON.stringify(result)
    4. })
    5. })
  1. {
  2. "code":"0",
  3. "data":{
  4. "uuid":"real uuid" // 设备uuid
  5. },
  6. "msg":"Success"
  7. }

commitHit

  • API: my.call(“commitHit”)
  • 功能:埋点
  • 参数
属性 类型 必填 说明
type String 四种埋点类型
1、2001页面埋点
pageEvent
2、19999自定义事件
customEvent
3、2101控件点击事件
controlClickEvent
4、2201曝光事件exposureEvent
param String 根据需求埋入业务方数据(注意: 所有子参数类型必须都是 String 类型)
  • 使用示例:

如埋点需求为:
1)事件类型:点击
2)埋点参数:接口已埋无需填入的字段无需业务方埋入

序号 参数key 参数名称 参数说明 埋点说明
1 model 系统模式 model表示儿童模式,0:儿童,1:成人 接口已埋无需填入
2 spm-cnt 当前页面spm_id 当前页面spm_id 接口已埋无需填入
3 biz_group 产品系列号 产品型号,比如s1 接口已埋无需填入
4 biz_type 产品型号 AILABS 接口已埋无需填入
5 from 页面来源 touch_screen 业务方数据需自埋
6 uuid 设备id 唯一设备id 接口已埋无需填入
7 user_Id 用户id 用户id 接口已埋无需填入
8 tab_id 会员tab的id tab的id 业务方数据需自埋
9 tab_name 会员tab的名称 会员tab名称 业务方数据需自埋
11 app_name 小应用名称 小应用名称:小应用名称 接口已埋无需填入
12 appid 小应用id 小应用id 接口已埋无需填入
  1. my.call('commitHit', {
  2. type:"controlClickEvent",
  3. param: {
  4. "tab_id": "testStr1",
  5. "tab_name": "testStr2",
  6. }
  7. },
  8. function(result) {
  9. my.alert({
  10. content: JSON.stringify(result)
  11. })
  12. });

返回值示例:

  1. {
  2. "code":"0",
  3. "msg":"Success"
  4. }

showAdvertise

  • 使用此接口前请先邮件申请:tmjlcc_genie@service.alibaba.com

邮件标题:开发者名称+应用名称
邮件正文:
1、应用名称和简介
2、开发者简介和联系方式(钉钉)
3、申请广告接口的使用方式

  • API: my.call(“showAdvertise”)
  • 功能:展示广告(可展示两种类型广告,视频广告及banner广告,业务方咨询达萌按需接入)
  • 入参: | 属性 | 类型 | 必填 | 说明 | | —- | —- | —- | —- | | type | String | 是 | 广告类型,目前有两种(全屏视频广告【投放横屏或竖屏】、banner广告)见广告样式 | | position | String | 否 | banner位置,目前有top、bottom两种,默认bottom(仅在type为banner时生效) | | backgroundColor | String | 否 | banner背景色,目前有black、white两种,默认black(仅在type为banner时生效) | | style | String | 否 | banner样式,目前有3图(three)、大图(big)、小图(small)三种,默认大图(仅在type为banner时生效) | | frequency | String | 否 | banner类型广告刷新频率,目前有三种刷新时长short、middle、long(10s、15s、20s),默认short(仅在type为banner时生效) |
  • response: | 回调方法 | 类型 | 必填 | 说明 | | —- | —- | —- | —- | | success | String | 是 | 播放视频广告完成时返回 | | fail | String | 是 | 播放视频广告未完成时返回 |

  • 广告样式:

视频广告(横屏)全屏
image.png

banner小图(small、black、bottom)【488*108】
image.png

banner大图(big、black、bottom)【556*108】
image.png

banner三图( three、top、white)【428*144】
image.png

  • 使用示例:

banner广告位

  1. my.call('showAdvertise', {
  2. type: 'banner',
  3. position:'bottom',
  4. backgroundColor:'black',
  5. style:'three',
  6. frequency:'long',
  7. },
  8. function(result) {
  9. my.alert({
  10. content: JSON.stringify(result)
  11. })
  12. });

视频广告位

  1. my.call('showAdvertise', {
  2. type: 'video',
  3. },
  4. function(result) {
  5. my.alert({
  6. content: JSON.stringify(result)
  7. })
  8. });