实战:基于 Twilio 搭建按升级规则路由的应急呼叫热线)
OneUptime 来电策略Incoming Call Policy实战基于 Twilio 搭建按升级规则路由的应急呼叫热线【免费下载链接】oneuptimeComplete open-source monitoring and observability platform.项目地址: https://gitcode.com/GitHub_Trending/on/oneuptime本文是一份面向自托管 OneUptime 运维与 SRE 团队的技术指南完整讲解Incoming Call Policy来电策略功能外部来电者拨打一个专用电话号码后如何由 Twilio 接收、经 Webhook 转发给 OneUptime再由 OneUptime 依照你配置的升级规则Escalation Rules逐级呼叫值班工程师直至有人接听。读完本文你将掌握从创建 Twilio 账号、配置 Call/SMS Config、购买/复用电话号码、编排升级链、定制 TTS 语音消息到查看通话日志与排障的完整落地流程。功能概述与工作原理来电策略让外部人员无需知道任何工程师的个人号码只要拨打一个专用热线号码即可按预设的升级链找到当前值班工程师。OneUptime 会按以下流程处理一次来电在 Twilio 电话号码上接收呼入呼叫播放可定制的问候语音Greeting Message依据升级规则可面向团队、值班排班或具体用户路由呼叫将来电者连接到第一位可接听的值班工程师若无人接听自动升级到下一条规则继续尝试。由于是自托管 OneUptime你需要在 Twilio 侧自行创建并绑定账号电话号码与话费账单完全由你掌控。从源码模型看每次呼叫的状态由 IncomingCallStatus.ts 定义包含Initiated发起、Ringing振铃、Connected已接通、Escalated已升级、NoAnswer无应答、Failed失败、Completed完成、CallerHungUp主叫挂断、Busy占线等状态通话记录与排障均以此为基础。呼叫路由主流程通话时序前置条件在开始配置前请确认已具备以下条件一个Twilio 账号——前往 Twilio 官网注册Twilio 控制台中的Account SID与Auth Token可访问你的OneUptime 自托管实例需能被互联网访问以接收 Twilio 的 Webhook 回调。分步配置指南步骤一创建 Twilio 账号前往 Twilio 官网注册账号完成账号验证流程从 Twilio 控制台ConsoleDashboard 中记录Account SID与Auth Token。步骤二在 OneUptime 中配置 Call/SMS Config登录 OneUptime Dashboard进入Project SettingsNotificationsNotification Settings点击Create Custom Call/SMS Config填写以下字段Name友好名称例如 Production Twilio ConfigDescription可选描述Twilio Account SID你的 Twilio Account SID以AC开头Twilio Auth Token你的 Twilio Auth TokenTwilio Primary Phone Number来自你 Twilio 账号的一个电话号码用于外呼点击Save保存。该配置是策略与 Twilio 之间的凭据桥梁后续所有呼入处理与外呼拨号都基于此配置完成。步骤三创建来电策略进入On-Call DutyIncoming Call Policies点击Create Incoming Call Policy填写Name友好名称例如 Support HotlineDescription可选描述点击Save保存。步骤四将 Twilio 配置关联到策略打开刚创建的来电策略在Phone Number Routing电话号码路由卡片中找到Step 2: Link Twilio Configuration点击Select Twilio Config选择步骤二中创建的配置保存选择。步骤五配置电话号码电话号码的绑定有两种方式任选其一方案 A使用 Twilio 中已有的电话号码在Phone Number卡片中点击Use Existing NumberOneUptime 会自动拉取你 Twilio 账号下的全部电话号码选择你想使用的号码点击Use This将其分配给策略。注意如果该号码原本已配置了 WebhookOneUptime 会将其更新为指向 OneUptime 自身。方案 B直接从 OneUptime 购买新号码在Phone Number卡片中点击Buy New Number从下拉列表中选择Country国家/地区可选输入Area Code区号例如旧金山可填 415可选输入号码需Contain包含的数字例如 555点击Search查找可用号码从结果中选择一个号码点击Purchase完成购买。新号码会从你的 Twilio 账号中购买且 Webhook自动配置完成——无需任何手动设置两种方案的后续流程完全一致最终都会进入配置升级规则的环节从前端实现看电话号码管理与策略绑定由 IncomingCallPolicyPhoneNumberUtil.ts 支撑它负责将策略下的多个电话号码按策略 ID 分组展示、生成紧凑摘要并兼容旧的标量式routingPhoneNumber字段——也就是说一个策略可以关联多个号码历史遗留的单一号码字段也会被保留为子记录以便统一管理与释放。步骤六配置升级规则升级规则决定了呼叫如何逐级路由打开你的来电策略进入Escalation Rules标签页点击Add Escalation Rule配置规则参数Order优先级顺序数字越小越先尝试Escalate After (seconds)升级前等待的时长On-Call Schedule选择排班路由给当前值班人Teams选择指定团队Users选择指定用户按需添加更多升级规则。在 升级规则页面实现 中可以确认几个关键行为每条规则的目标在用户User与值班排班On-Call Schedule之间二选一前端在保存时会校验userId与onCallDutyPolicyScheduleId二者必须设置其一并把另一个字段清空确保规则目标唯一规则的Order字段支持表格内拖拽排序enableDragAndDropdragDropIndexFieldorder按升序执行Escalate After (Seconds)是必填数值字段占位符默认为30对应文档中 30 秒的默认等待时长。升级链示例顺序升级等待时长呼叫目标130 秒主值班排班Primary On-Call Schedule230 秒次值班排班Secondary On-Call Schedule330 秒工程团队负责人Engineering Team Lead步骤七配置语音消息可选自定义来电者听到的语音内容打开来电策略进入Settings配置Greeting Message呼叫接通时播放No Answer Message所有升级规则均失败时播放No One Available Message当前无人值班时播放。在 策略设置页面实现 中上述三条消息均以 TTS文本转语音形式播放greetingMessage、noAnswerMessage、noOneAvailableMessage三个字段并提供了与文档默认值完全一致的占位提示文案。配置选项速查表策略级设置设置项说明默认值Greeting Message呼叫接通时播放的 TTS 消息Please wait while we connect you to the on-call engineer.No Answer Message所有升级规则均失败时播放的消息No one is available. Please try again later.No One Available Message无人值班时播放的消息Were sorry, but no on-call engineer is currently available.Repeat Policy If No One Answers全部失败后是否从第一条规则重新开始关闭DisabledRepeat Policy Times最大重复尝试次数1在 Settings.tsx 中还可看到策略级开关EnabledisEnabled用于整体启用或停用策略该开关与文档故障排查章节中“确认策略已启用”的检查项一一对应。升级规则级设置设置项说明Order优先级顺序1 最高优先级Escalate After Seconds尝试下一条规则前的等待时间默认 30 秒On-Call Schedule路由给当前值班人Teams路由给所选团队的全部成员Users路由给指定用户查看通话日志查看呼入通话历史进入On-Call DutyIncoming Call Policies点击你的策略进入Call Logs标签页。日志中包含以下信息来电者电话号码呼叫状态Completed、No Answer、Failed 等谁接听了呼叫通话时长时间戳。这些状态字段即由前文提到的 IncomingCallStatus.ts 枚举定义通话日志页面IncomingCallPolicy/Logs.tsx与LogView.tsx直接基于该模型渲染便于逐条追溯每次升级与接听结果。用户电话号码配置要让用户能够被升级规则呼叫用户必须先拥有已验证的电话号码用户进入User SettingsNotification Methods在Incoming Call Numbers下添加电话号码通过短信验证码完成号码验证。只有拥有已验证电话号码的用户才会被升级规则呼入。释放电话号码若某号码不再需要打开来电策略在Phone Number卡片中点击Release Number确认释放操作。警告释放后的号码会归还给 Twilio之后可能无法再次购买。常见问题排查收不到来电确认 Twilio 配置已正确关联到策略检查 OneUptime 实例是否可从公网访问Twilio 需要回调你的 Webhook 地址核对 Twilio 的 Account SID 与 Auth Token 是否正确查看 Twilio 控制台中的错误日志。来电无法连接到工程师确认用户在通知设置中拥有已验证的电话号码检查升级规则是否正确配置确保当前时间段内值班排班已分配了用户确认策略处于启用状态。语音质量问题确保服务器网络连接稳定查看 Twilio 状态页是否有进行中的故障确认电话号码格式正确E.164 格式例如15551234567。安全注意事项妥善保管 TwilioAuth Token切勿公开泄露为你的 OneUptime 实例启用HTTPSOneUptime 会校验 Webhook 签名以确保请求确实来自 Twilio建议限制允许拨打你来电策略的号码范围例如配合 Twilio 侧的号码白名单能力。架构总览一次呼叫从外部到接通值班工程师的完整链路如下进一步探索本文对应的原始文档位于 incoming-call-policy.md波斯语版 与 incoming-call-policy.md英文版另有 15 种其他语言版本可参考升级规则的前端表单与校验逻辑Escalation.tsx语音消息与策略开关设置Settings.tsx电话号码分组与管理工具IncomingCallPolicyPhoneNumberUtil.ts呼叫状态枚举模型IncomingCallStatus.ts。按上述步骤完成配置后你的团队便拥有了一条可全天候接听、按升级链自动路由、并留存完整通话记录的应急呼叫热线。遇到问题时可先检查 Twilio 控制台错误日志再结合 OneUptime 服务端日志定位原因。【免费下载链接】oneuptimeComplete open-source monitoring and observability platform.项目地址: https://gitcode.com/GitHub_Trending/on/oneuptime创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考