为了保障审核服务的可靠性,Agora 建议你在集成阿里语音智能审核 RESTful API 时注意以下几点:
如果你使用域名 api.agora.io
发起 RESTful API 请求失败,可以先用该域名重试一次;如再次失败,可将域名替换为 api.sd-rtn.com
,再次发送请求。建议使用退避策略,如第一次等待 1 秒后重试、第二次等待 3 秒后重试、第三次等待 6 秒后重试,以免超过每秒请求数(QPS)限制导致失败。
你可以通过阿里语音智能审核 RESTful API 来获取审核服务状态。
建议你通过如下步骤确认审核服务已成功启动:
start
请求成功,即成功获得 sid
(审核 ID)。如果 start
请求失败,需要根据状态码采取相应措施:40x
,则表示请求参数错误,需要进行排查。50x
,可使用相同的参数重试多次,直到成功返回 sid
为止。建议使用退避策略,如第一次等待 3 秒后重试、第二次等待 6 秒后重试、第三次等待 9 秒后重试,以免超过 QPS 限制导致失败。如果三次重试均失败,建议更换 UID 再次调用 acquire
, 获得一个新的 resource ID,并用该 resource ID 再次调用 start
方法。sid
之后的 5 秒后,使用退避策略调用 query
方法,退避间隔建议小于 start
请求中的 maxIdleTime
(最长空闲频道时间)。如果 query
请求成功,且 serverResponse
中的 status
参数值为 4
或 5
,则表示审核服务已成功启动。如果在获得 sid
之后的 90 秒后 status
仍非 4
或 5
, 则可以认为审核未启动或成功后超时退出。如果你对状态查询的可靠性要求较高,Agora 强烈建议你使用 query
方法周期性查询频道内的审核状态,例如每隔 2 分钟调用一次 query
,并根据返回的 HTTP 状态码采取相应措施。
40x
,则表示请求参数错误,需要进行排查。404
,且已经确认请求参数无误,则表示审核并未成功启动、或启动后中途退出。建议采用退避策略多次调用 query
(例如间隔 5 秒、10 秒、15 秒)进行确认。50x
,则表示 query
请求失败,但尚不明确审核是否已退出。出现 50x
错误的概率极小,建议使用退避策略 (5 秒, 10 秒, 15 秒,30 秒) 继续调用 query
。start
方法中的 maxIdleTime
参数默认值为 30 秒。如果实际场景中主播频繁上下线,过短的 maxIdleTime
会导致审核服务频繁退出。对于要求审核服务一直在频道中的场景,需要加大 maxIdleTime
,避免因频道内短时间无发流端导致的审核退出。
举例来说,如果每堂课中固定有 5 分钟的休息时间,则可以将 maxIdleTime
设置为 10 分钟,保证整堂课的审核不中断。