如何在ServiceNow中集成WhatsApp?配置Twilio/Infobip遇阻求助
ServiceNow集成WhatsApp实现Incident更新通知方案
一、Twilio集成步骤与问题排查
1. 基础配置准备
- 确认Twilio账号已开通WhatsApp业务功能,获取
Account SID、Auth Token,以及已验证/审批的WhatsApp发送号码(如官方测试号+14155238886或自有品牌号) - 在ServiceNow中通过Business Rule触发消息发送(适配Incident更新场景)
2. Business Rule核心配置
- 触发条件:选择
Incident表,触发时机设为记录更新,可按需添加过滤规则(如状态变更、新增备注等) - 执行脚本:
// 处理呼叫者手机号为国际标准格式 var callerPhone = current.caller_id.mobile_phone; if (!callerPhone || !callerPhone.startsWith('+')) { callerPhone = '+86' + callerPhone.replace(/[^0-9]/g, ''); } // Twilio参数配置 var twilioAccountSid = '你的Twilio Account SID'; var twilioAuthToken = '你的Twilio Auth Token'; var twilioFromNumber = 'whatsapp:+14155238886'; // 替换为你的发送号,需带whatsapp:前缀 var messageBody = 'Incident #' + current.number + '已更新,当前状态:' + current.state.getDisplayValue(); // 调用Twilio API发送消息 var request = new sn_ws.RESTMessageV2(); request.setEndpoint('https://api.twilio.com/2010-04-01/Accounts/' + twilioAccountSid + '/Messages.json'); request.setHttpMethod('POST'); request.setBasicAuth(twilioAccountSid, twilioAuthToken); request.addParameter('From', twilioFromNumber); request.addParameter('To', 'whatsapp:' + callerPhone); request.addParameter('Body', messageBody); var response = request.execute(); gs.log('Twilio发送结果:状态码' + response.getStatusCode() + ',响应内容' + response.getBody());
3. 常见问题排查
- 格式错误:发送/接收号码必须带
whatsapp:前缀,且手机号为国际标准格式(含国家码) - 权限限制:检查ServiceNow的
出站HTTP请求列表是否已添加api.twilio.com,确保允许访问该域名 - Twilio侧拦截:测试号仅能给已验证的手机号发消息;品牌号需完成WhatsApp商业账户审批,否则消息会被拦截
二、Infobip集成步骤与问题排查
1. 基础配置准备
- 获取Infobip的
API Key、区域Base URL(如https://eu.api.infobip.com),以及已配置完成的WhatsApp发送号码 - 确认Infobip账号已完成WhatsApp业务注册,目标手机号在测试阶段已完成验证
2. Business Rule核心配置
- 触发条件同Twilio:
Incident表记录更新时触发,按需添加过滤规则 - 执行脚本:
// 处理呼叫者手机号为国际标准格式 var callerPhone = current.caller_id.mobile_phone; if (!callerPhone || !callerPhone.startsWith('+')) { callerPhone = '+86' + callerPhone.replace(/[^0-9]/g, ''); } // Infobip参数配置 var infobipApiKey = '你的Infobip API Key'; var infobipBaseUrl = 'https://eu.api.infobip.com'; // 替换为你的区域Base URL var infobipFromNumber = '你的WhatsApp发送号'; var messageBody = 'Incident #' + current.number + '已更新,当前状态:' + current.state.getDisplayValue(); // 调用Infobip API发送消息 var request = new sn_ws.RESTMessageV2(); request.setEndpoint(infobipBaseUrl + '/whatsapp/1/message/text'); request.setHttpMethod('POST'); request.setRequestHeader('Authorization', 'App ' + infobipApiKey); request.setRequestHeader('Content-Type', 'application/json'); var requestBody = { "messages": [ { "from": infobipFromNumber, "to": callerPhone, "content": { "text": messageBody } } ] }; request.setRequestBody(JSON.stringify(requestBody)); var response = request.execute(); gs.log('Infobip发送结果:状态码' + response.getStatusCode() + ',响应内容' + response.getBody());
3. 常见问题排查
- API版本错误:确保使用Infobip当前可用的WhatsApp API版本(如v1),避免因版本过期导致请求失败
- 签名验证失败:检查
Authorization头格式是否为App 你的API Key,不要添加多余前缀 - 模板限制:正式商用场景下,WhatsApp要求使用预审批的消息模板;测试阶段可使用自由文本,但正式环境必须切换为审批通过的模板
内容的提问来源于stack exchange,提问作者Gunashekar n
相关产品推荐
相关产品推荐

