呼叫与留言

更新时间:2023-08-09 09:25:02下载pdf

呼叫留言 是带有呼叫按键的设备的基本功能。

  • 呼叫 是在按下门铃设备的 门铃按键 的一系列响应动作。此后在 App 端会出现 接听拒绝 的界面,对门铃 呼叫 进行处理。
  • 留言 是在按下门铃键后,App 端未处理或者拒绝接听,且在门铃设备播放留言提示音后,再次按键进行留言的操作。

功能特性

呼叫留言 基本业务功能流程如下:

未接听
处理
不处理
门铃按键呼叫
App接听
接听后挂断
结束
播放留言提示音
是否处理
留言

门铃呼叫时 App 客户端弹窗内容如下:

呼叫与留言

工作原理

呼叫

  • 通常由 Wi-Fi 芯片先接收到门铃按键中断,然后唤醒主控芯片。

  • 主控操作系统启动,应用程序启动。

  • Wi-Fi 芯片向主控发送按键按下消息,之后该消息在主控应用程序中作相应处理并进行流转。

  • 之后的动作有,播放叮咚提示音、抓拍,执行灯效、推送事件等。

    门铃触发流程如下:

    设备涂鸦云端第三方云端App用户触发门铃MQTT43转发显示门铃呼叫媒体信息(图片)DP 153=4(212)转发显示门铃呼叫和图片消息中心显示相关告警信息获取媒体信息设备涂鸦云端第三方云端App

接听

  • App 呼叫页面中单击接听后,发送 MQTT 消息至设备。
  • 设备处理来自 MQTT 的关于是否接听的消息,在 app_user_event 内部进行灯效控制响应、推送事件和相关标记的记录。同时在 app_user_doorbell 中启动定时器,超时后结束通话或提前挂断。

留言

  • 首次按下后门铃键后,app_user_doorbell 内部启动定时器,未作处理或者直接挂断后的一段时间后,在 app_user_event 组件中会播放留言提醒音频。
  • 播放留言提醒音频后的若干时间内,需要再次按下门铃按键。
  • app_user_doorbell 内部启动定时器。app_user_event 中开始进行录像留言。
  • 上述定时器到期后,app_user_doorbell 启动线程监控留言上传状态,留言超时后结束。

开发指导

关联组件

  • app_user_doorbell
  • app_user_event
  • app_main
  • common_xxx

留言的时间参数

  • 在门铃键按下后,25 秒内未接听或者拒绝接听,将会播放留言提示音。

  • 播放留言提示音后 15 秒内再次按下门铃键,进入留言。留言时长 10 秒,留言超时结束后进入休眠。

    以上时间参数可通过修改 ability.config 中相关配置项

    TY_DOORBELL_ENABLE=1              // 门铃使能
    TY_DOORBELL_LEAVEMSG_ENABLE=1     // 留言使能
    TY_DOORBELL_CALL_TIMEOUT=25       // 未接听超时时间
    TY_DOORBELL_MSG_TIMEOUT=10        // 留言时长
    
  • 呼叫与留言相关的灯效和提示音,可通过配置文件更改。

    以上播放提示音等动作可通过修改 actions.config 中相关配置项重新定义。例如,以下配置会转换为宏定义,映射至 ty_status_action_map.c.in 文件中,并最终形成源文件编译进程序中。

    可支持修改的动作,在 actions.config 已全部列出,等号右侧值的含义可在各个应用组件的头文件中找到,并支持修改。

    E_TY_DOORBELL_FIRST_PRESS_ACTION_1=TY_LED_RING_BLINK_BREATH_TWICE
    E_TY_DOORBELL_FIRST_PRESS_ACTION_2=ACTION_FILE_DOORBELL
    E_TY_DOORBELL_NOT_FIRST_PRESS_ACTION_1=TY_LED_RING_BLINK_BREATH_TWICE
    E_TY_DOORBELL_NOT_FIRST_PRESS_ACTION_2=ACTION_FILE_DOORBELL
    E_TY_DOORBELL_LEAVE_MSG_ACTION_1=TY_LED_RING_BLINK_BREATH_START
    E_TY_DOORBELL_NOT_LEAVE_MSG_ACTION_1=TY_LED_RING_BLINK_BREATH_STOP
    E_TY_DOORBELL_LEAVE_MSG_END_ACTION_1=TY_LED_RING_BLINK_BREATH_STOP
    E_TY_DOORBELL_CALL_ACCEPT_ACTION_1=TY_LED_RING_BLINK_BREATH_STOP
    E_TY_DOORBELL_CALL_NOT_ACCEPT_ACTION_2=ACTION_FILE_MSG
    E_TY_DOORBELL_CALL_END_ACTION_1=TY_LED_RING_BLINK_BREATH_STOP
    E_TY_DOORBELL_UNREGISTER_PRESS_ACTION_2=ACTION_FILE_DOORBELL
    

数据结构

以下主要介绍 app_user_doorbell 中相关数据结构。

初始化参数的数据结构如下:

typedef struct
{
    unsigned int CallTimeout;       //呼叫超时时间哦长
    unsigned int LeaveMsgTimeout;   //留言时长
    unsigned int NotifyMsgTimeout; //等待留言时长
    unsigned int isLeaveMsg;        //留言开关
}TY_DOORBELL_PARAM_S;

API 说明

以下主要介绍 app_user_doorbell 中相关 API

门铃组件初始化

该 API 会立即返回,具体门铃业务响应步骤将异步执行。

/**
* @ Doorbell service initialization
*
* @param[in] TY_DOORBELL_PARAM_S
* @return OPERATE_RET 0 表示成功,非 0 请参照 tuya error code 描述文档
* @warning:
*/
int ty_user_doorbell_start(TY_DOORBELL_PARAM_S *param);

门铃组件反初始化

/**
* @ Doorbell service stop
*
* @return OPERATE_RET 0 表示成功,非 0 请参照 tuya error code 描述文档
* @warning:
*/
int ty_user_doorbell_stop();

更新门铃相关业务参数

/**
* @ Update param
*
* @param[in] TY_DOORBELL_PARAM_S
* @return OPERATE_RET 0 表示成功,非 0 请参照 tuya error code 描述文档
* @warning:
*/
int ty_user_doorbell_update_param(TY_DOORBELL_PARAM_S *param);

注意事项

门铃的音频文件放置在 resource/audio 中,替换时需注意对应的音频格式。

常见问题

按下门铃后,为什么 App 没反应?

请确认:

  • 设备正常联网、配网。
  • 产品有配置门铃呼叫等相关的 DP,一般情况下 DP 是 154。您可以登录 涂鸦 IoT 开发平台 查看 DP 配置情况。