设备和小程序双向呼叫

最近更新时间:2026-04-07 10:43:42

我的收藏

设备呼叫小程序

小程序授权被呼叫,并获取 openID

关于小程序的开发,请参考 VoIP 通话插件-接入指引。目前我们提供一个体验小程序,可微信扫描下方二维码获取:

1. 进入小程序,选中底部的 Features,然后单击 TWeCall

2. 在输入设备信息这一栏中,填入我们申请的设备三元组中的“产品ID_设备名称

注意:
这里的设备 sn 必须得是产品 ID 和设备名的拼接,并且是用下划线(_)来拼接,这是设备和小程序建立联系的关键,不可填错。
3. 然后依次单击拉取订阅,拿到 openID

设备 SDK 填入被呼叫小程序的相关信息和 openID

1. 在 tc_twetalk_ws_init 的入参中填入体验小程序的 appid 和 modelid。
// 体验小程序是这两个,如果用户自己开发小程序,则填入自己小程序的
twetalk_params.wxa_appid = "wx9e8fbc98ceac2628";
twetalk_params.wxa_modelid = "DYEbVE9kfjAONqnWsOhXgw";
2. 然后在初始化完成后,填入用户的 openID 并同步给智能体。

TWeCallOpenids openids[2];
memset(openids, 0, sizeof(openids));
strcpy(openids[0].name, "张三");
strcpy(openids[0].open_id, "oOMCN5CR14xUh7vBmxRQdSYjsLek"); // p2p player --> xph
strcpy(openids[4].name, "小明");
strcpy(openids[4].open_id, "o196r5J33Q5N0o4w22379978ss26");
tc_twetalk_call_sync_openids(sg_twetalk_handle, openids, 2);

如果想呼叫多个用户,则按照上一个步骤中的操作逻辑,获取用户的 openID,并填入上述数组中,类似通讯录的概念。其中的 name 字段就是被呼叫用户的昵称,可以自定义。当在对话过程中检测到:给张三打电话、呼叫张三、帮我给妈妈打电话等指令后,智能体会根据 openids 来自动识别给某人打电话。并且相关人员的微信弹窗会出现音频呼叫提醒,接听即可通话。

设备运行日志分析


INF|58361|twetalk_call.c|tc_twetalk_call_event_type_print(133): ✅ [04] RECV_USR_ANSWER - 小程序接听
INF|58362|twetalk_app.c|_twetalk_recv_event_cb(330): user answer called: \\u5988\\u5988 openid: oOMCN5CR14xUh7vBmxRQdSYjsLek
I (66286) TWETALK: vad start
INF|65948|twetalk_ws.c|ws_recv(474): Received Ping, auto-replied Pong (payload len:1010820564 data len : 4)
I (67312) TWETALK: vad end
I (67808) TWETALK: vad start
I (69044) TWETALK: vad end
INF|69227|twetalk_call.c|tc_twetalk_call_event_type_print(142): 📞 [07] RECV_USR_HANGUP - 小程序挂断
INF|69227|twetalk_app.c|_twetalk_recv_event_cb(336): user hangup called: \\u5988\\u5988 openid: oOMCN5CR14xUh7vBmxRQdSYjsLek
INF|69534|twetalk_call.c|tc_twetalk_call_event_type_print(119): 🎤 [00] BOT_START_SPEAKING - 机器人开始说话
INF|69534|twetalk_app.c|_twetalk_recv_event_cb(298): bot start speaking
I (72045) TWETALK: vad start
INF|71377|twetalk_call.c|tc_twetalk_call_event_type_print(122): 🔇 [01] BOT_STOP_SPEAKING - 机器人停止说话
INF|71377|twetalk_app.c|_twetalk_recv_event_cb(303): bot stop speaking
I (73063) TWETALK: vad end
INF|72217|twetalk_call.c|tc_twetalk_call_event_type_print(128): 👤 [03] USR_TRANSCRIPTION - 用户字幕

小程序呼叫设备

我们还是以“设备呼叫小程序”中提到的 demo 小程序为例,来介绍小程序呼叫设备的流程。

控制台操作

1. 物联网开发平台控制台 创建应用。具体操作可参加 应用开发
2. 在应用信息中,获取小程序的 APP Key 和 APP Secret。

3. 在应用开发的关联产品模块下,选择 入门指引 中新创建的产品并关联在一起。


小程序操作

1. 回到体验小程序界面,选择 Features > voip呼叫设备

2. 填入相关参数:

APPKey 和 APPSecret 就是上文新建应用获取的 APP Key 和 APP Secret,建议直接复制粘贴,避免手动输入导致出错。
Sn 是被呼叫的设备产品 ID 和设备名称的拼接,这里需要严格按照此格式(产品 ID_设备名称)来填入。
测试设备的 ModelId 是固定值 DYEbVE9kfjAONqnWsOhXgw,请直接复制粘贴填入即可。
呼叫方式目前只支持音频。
3. 确保设备在线,单击呼叫即可和设备建立音频通话。

设备运行日志分析


INF|135695|twetalk_call.c|tc_twetalk_call_event_type_print(155): 📞 [08] RECV_ROOMID - 收到呼叫
INF|135705|twetalk_app.c|_twetalk_recv_event_cb(320): calling roomid: wxf830863afde621ebWmpfVoip13888364703407054023
INF|138146|twetalk_call.c|tc_twetalk_call_event_type_print(141): ✅ [04] RECV_USR_ANSWER - 小程序接听
INF|138147|twetalk_app.c|_twetalk_recv_event_cb(330): user answer called: \\u5988\\u5988 openid: oOMCN5CR14xUh7vBmxRQdSYjsLek
INF|146676|twetalk_ws.c|ws_recv(474): Received Ping, auto-replied Pong (payload len:1010812192 data len : 4)
INF|146804|twetalk_call.c|tc_twetalk_call_event_type_print(147): 📞 [06] RECV_USR_HANGUP - 小程序挂断
INF|146805|twetalk_app.c|_twetalk_recv_event_cb(336): user hangup(user_to_device) called: \\u5988\\u5988 openid: oOMCN5CR14xUh7vBmxRQdSYjsLek
INF|147192|twetalk_call.c|tc_twetalk_call_event_type_print(127): 🎤 [00] BOT_START_SPEAKING - 机器人开始说话
INF|147192|twetalk_app.c|_twetalk_recv_event_cb(298): bot start speaking
INF|149071|twetalk_call.c|tc_twetalk_call_event_type_print(130): 🔇 [01] BOT_STOP_SPEAKING - 机器人停止说话
INF|149071|twetalk_app.c|_twetalk_recv_event_cb(303): bot stop speaking