Azure Communication Service中redirectCall功能故障求助
Azure Communication Service redirectCall 出现“line busy”问题的排查方案
核心问题定位
你遇到的“线路忙”提示,通常和redirectCall参数配置错误、ACS号码权限或目标号状态有关,以下是针对性的排查和修复步骤:
排查修复步骤
1. 强制使用ACS归属号码作为sourceCallIdNumber
sourceCallIdNumber必须是你的ACS资源下已验证的PSTN号码,不能使用外部来电号码。即使你尝试过修改,再次确认:
- 该号码已在Azure门户的ACS资源中完成验证并关联
- 号码状态正常,无呼出限制
修改代码中的callerIdNumber为你的ACS号码:
const callerIdNumber = { phoneNumber: "+你的ACS验证号码" }; // 替换为实际ACS号码
2. 完善错误捕获,获取具体错误信息
你的代码未对redirectCall做错误处理,无法得知API返回的具体错误原因。添加try-catch块捕获详细错误:
if (req.body[0].eventType && req.body[0].eventType === 'Microsoft.Communication.IncomingCall') { const incomingCallContext = req.body[0].data.incomingCallContext; console.log('来电号码:', req.body[0].data.from.phoneNumber.value) console.log('呼叫上下文:', incomingCallContext) const target = { targetParticipant: { phoneNumber: "+1xxxxxxxxxx" }, sourceCallIdNumber: { phoneNumber: "+你的ACS验证号码" }, // 明确指定ACS号码 }; try { await client.redirectCall(incomingCallContext, target); res.status(200).json([]); } catch (error) { console.error('重定向失败详情:', error); res.status(500).json({ error: '重定向失败', errorDetails: error.message }); } }
通过控制台日志查看错误代码(如403权限不足、400参数错误),能快速定位根因。
3. 验证目标号码状态
- 确保目标号码是可正常接听的PSTN号码,无呼叫转移、停机、占线等情况
- 目标号码必须严格遵循E.164格式,无空格、括号等特殊字符
4. 检查ACS资源权限
- 确认ACS资源已启用PSTN呼叫功能,并在Azure门户中检查是否有额度限制或服务异常
- 确认你的连接字符串拥有足够的权限(至少包含
CallAutomation相关操作权限)
5. 确认incomingCallContext的完整性
确保从Microsoft.Communication.IncomingCall事件中获取的incomingCallContext是完整的原始值,未被修改或截断。
内容的提问来源于stack exchange,提问作者jacksongnav
相关产品推荐
相关产品推荐

