ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

OneUptime 来电策略(Twilio)实战指南:构建面向值班工程师的电话升级链

OneUptime 来电策略(Twilio)实战指南:构建面向值班工程师的电话升级链 OneUptime 来电策略Twilio实战指南构建面向值班工程师的电话升级链【免费下载链接】oneuptimeComplete open-source monitoring and observability platform.项目地址: https://gitcode.com/GitHub_Trending/on/oneuptime本文以 OneUptime 官方文档《来电策略Twilio 集成》为主线完整覆盖来电策略的工作原理、七步配置流程、全部参数与默认值、呼叫日志与故障排查方法并结合开源仓库中的数据模型IncomingCallPolicy、IncomingCallPolicyEscalationRule与服务端代码说明每个配置项在系统中的落地方式与调用关系帮助你在自托管 OneUptime 中独立搭建一套可运行的“外部拨入 → 值班升级 → 通话接通”的电话告警链路。一、功能定位外部来电如何触达值班工程师来电策略Incoming Call Policy让外部拨打者通过拨打一个专用电话号码直接联系到你团队中的值班工程师。当有人拨打该号码时OneUptime 会按照你配置的升级规则升级链escalation rules依次呼叫直到有工程师接听为止。从仓库中的文档与代码结构看该功能由三个部分协作完成数据层来电策略实体、升级规则实体、电话号码子表、呼叫日志实体定义在 IncomingCallPolicy.ts、IncomingCallPolicyEscalationRule.ts、IncomingCallPolicyPhoneNumber.ts、IncomingCallLog.ts 等模型中服务层IncomingCallPolicyService.ts、IncomingCallPolicyPhoneNumberService.ts、ProjectCallSMSConfigService.ts 等负责策略、号码与 Twilio 配置的读写以及标签规则/负责人规则引擎界面层策略的创建与配置页面位于 IncomingCallPolicy/Index.tsx、Escalation.tsx、Settings.tsx、Logs.tsx。1.1 工作流程总览1.2 呼叫路由时序1.3 架构总览功能的核心行为可归纳为五点在 Twilio 电话号码上接收来电播放可自定义的欢迎语音TTS按升级规则值班表、团队或用户路由呼叫将来电者连接到第一个可用的值班工程师若无人接听则升级到下一条规则。由于你自托管 OneUptime需要自行配置 Twilio 账户——这让你对电话号码与账单拥有完全控制。二、前提条件开始之前需要一个 Twilio 账户在 Twilio 官网注册创建Twilio 账户的Account SID以AC开头与Auth Token在 Twilio 控制台查看一台可从公网访问的自托管 OneUptime 实例Twilio 需要回调你的/incoming-call/voicewebhook 地址。三、配置步骤完整流程步骤 1创建 Twilio 账户前往 Twilio 官网并创建账户完成身份验证流程从 Twilio 控制台记录你的Account SID与Auth Token。步骤 2在 OneUptime 中创建呼叫/SMS 配置登录 OneUptime 仪表盘进入项目设置Project Settings 通知Notifications 通知设置Notification Settings点击创建自定义呼叫/SMS 配置Create Custom Call/SMS Config填写以下字段名称Name便于识别的名称如「生产环境 Twilio 配置」描述Description可选Twilio Account SID你的 Twilio 账户 SID以AC开头Twilio Auth Token你的 Twilio 认证令牌Twilio 主电话号码Primary Phone Number你 Twilio 账户中用于外呼的电话号码点击保存Save。从源码结构看该配置对应ProjectCallSMSConfig实体由 ProjectCallSMSConfigService.ts 管理来电策略通过projectCallSMSConfigId字段与之关联。步骤 3创建来电策略进入值班On-Call 来电策略Incoming Call Policies点击创建来电策略Create Incoming Call Policy填写名称Name便于识别的名称如「支持热线」描述Description可选点击保存Save。步骤 4将 Twilio 配置关联到策略打开刚创建的来电策略在电话号码路由Phone Number Routing卡片中找到第 2 步关联 Twilio 配置点击选择 Twilio 配置Select Twilio Config并选择步骤 2 中创建的配置保存选择。这一点在数据模型中有直接对应IncomingCallPolicy实体包含可选的projectCallSMSConfig/projectCallSMSConfigId字段见 IncomingCallPolicy.ts其注释明确说明——设置项目级配置后将使用该配置代替全局配置且此时不适用平台侧计费。步骤 5配置电话号码两种选项选项 A使用现有 Twilio 号码若你的 Twilio 账户中已有号码在电话号码卡片中点击使用现有号码Use Existing NumberOneUptime 会拉取你 Twilio 账户中的所有号码选择要使用的号码点击使用此号码Use This Number将其分配给策略。注意如果该号码已配置了其他 webhook它会被更新为指向 OneUptime。选项 B购买新号码直接在 OneUptime 中购买新号码在电话号码卡片中点击购买新号码Purchase New Number在下拉列表中选择国家Country可选填写区域代码Area Code如旧金山的 415可选填写号码需包含Contains的数字如 555点击搜索Search查找可用号码在结果中选择一个号码点击购买Purchase完成购买。号码将从你的 Twilio 账户扣费购买且 webhook 会自动配置——无需任何手动操作。前端购买交互实现于 PhoneNumberPurchase.tsx。号码存储的源码细节IncomingCallPolicy表上有一个routingPhoneNumber字段其唯一索引IDX_INCOMING_CALL_POLICY_ROUTING_PHONE_UNIQUE在模型注释中说明是“最老号码的兼容性镜像”oldest-number compatibility mirror权威数据存放在号码子表phone-number child rows中该设计用于滚动升级期间保持“仅标量字段”的 webhook 回退路径无歧义见 IncomingCallPolicy.ts。此外还记录了callProviderPhoneNumberId如 Twilio 的号码 SID、phoneNumberCountryCode、phoneNumberAreaCode、phoneNumberPurchasedAt等元数据。步骤 6配置升级规则升级规则决定呼叫如何被路由打开来电策略进入升级规则Escalation Rules选项卡点击添加升级规则Add Escalation Rule配置规则字段顺序Order优先级顺序数字越小越先尝试升级等待时间 Escalate After秒等待多久后升级值班表On-Call Schedule选择值班表呼叫将路由到当前值班人团队Teams选择特定团队用户Users选择特定用户如需要继续添加更多升级规则。规则字段与源码对应IncomingCallPolicyEscalationRule.tsorder执行顺序1, 2, 3…escalateAfterSeconds升级等待秒数onCallSchedule/onCallScheduleId关联值班表user/userId关联指定用户实体描述为“定义呼叫对象与顺序的来电策略升级规则”。升级链示例顺序升级等待目标130 秒主值班表230 秒备用值班表330 秒工程团队负责人补充除文档主流程外仓库中还存在标签规则引擎与负责人规则引擎两个服务IncomingCallPolicyLabelRuleEngineService.ts、IncomingCallPolicyOwnerRuleEngineService.ts及对应界面 LabelRules.tsx、OwnerRules.tsx从源码结构看它们是用于进一步细化的来电路由扩展能力。步骤 7配置语音消息可选自定义拨打者听到的语音内容打开来电策略进入设置Settings配置三项消息欢迎消息Greeting Message接听时播放无人接听消息No Answer Message所有升级规则耗尽时播放无可用人员消息No One Available Message当前无人在值班时播放。策略参数、默认值与源码依据以下参数表完整继承自官方文档默认值已与 IncomingCallPolicy.ts 中Column的default声明逐一核对参数说明默认值源码字段欢迎消息接到来电时播放的 TTS 消息“Please wait while we connect you to the on-call engineer.”greetingMessageL476-482无人接听消息所有升级规则失败时播放“No one is available. Please try again later.”noAnswerMessageL518-524无可用人员消息当前无人在值班时播放“We are sorry, but no on-call engineer is currently available. Please try again later or contact support.”noOneAvailableMessageL560-567无人接听时重复策略全部规则失败后从第一条规则重新开始关闭falserepeatPolicyIfNoOneAnswersL648-653策略重复次数重复尝试的最大次数1repeatPolicyIfNoOneAnswersTimesL691-696另有isEnabled策略启用开关默认trueL605-610——排查“来电不转接”时需确认策略处于启用状态。升级规则参数参数说明顺序Order优先级顺序1 最高优先级升级等待Escalate After秒尝试下一条规则前的等待时间文档建议默认 30 秒值班表路由到当前值班人团队路由到所选团队的所有成员用户路由到指定用户四、呼叫日志追踪每一次来电查看来电历史的步骤进入值班On-Call 来电策略点击你的策略进入呼叫日志Call Logs选项卡。日志展示内容来电者电话号码呼叫状态已完成、无人接听、失败等接听者通话时长时间戳。日志数据由 IncomingCallLog.ts 与 IncomingCallLogItem.ts 两个模型承载界面实现于 Logs.tsx 与 LogView.tsx。五、用户侧配置接收来电的电话号码要让用户能接到来电其个人电话号码必须先完成验证用户进入用户设置User Settings 通知方式Notification Methods在来电号码Incoming Call Numbers下添加号码通过短信验证码完成号码验证。只有拥有已验证电话号码的用户才能通过升级规则被呼叫。用户来电号码的后端 API 为 UserIncomingCallNumberAPI.ts对应数据模型 UserIncomingCallNumber.ts前端管理组件为 IncomingCallNumber.tsx。六、释放电话号码若不再需要某个号码打开来电策略在电话号码卡片中点击释放号码Release Number确认释放。警告释放的号码将归还给 Twilio之后可能无法再次购得。七、故障排查7.1 来电未到达确认 Twilio 配置已正确关联到策略确认 OneUptime 实例可从公网访问Twilio 需回调 webhook确认 Account SID 与 Auth Token 正确查看 Twilio 控制台中的错误日志。7.2 来电未接通到工程师确认用户已在通知设置中配置已验证的电话号码确认升级规则配置正确确认值班表在当前时段有指派的值班用户确认策略处于启用状态isEnabled见上文模型字段。7.3 音频质量异常确保服务器拥有稳定的互联网连接查看 Twilio 状态页是否有正在发生的故障确认电话号码格式正确E.164 格式如15551234567。八、安全注意事项妥善保管 Twilio Auth Token绝不可公开暴露OneUptime 实例应使用 HTTPSOneUptime 会对 webhook 进行签名校验确保请求确实来自 Twilio可考虑限制允许拨打来电策略的号码范围。九、延伸阅读英文原版文档en/on-call/incoming-call-policy.md本文所依据的法文版文档位于 fr/on-call/incoming-call-policy.md自托管 Twilio 集成说明en/self-hosted/twilio-integration.md来电策略 CRUD API 路由为/incoming-call-policy见 IncomingCallPolicy.ts 的CrudApiEndpoint声明可通过 REST API 以编程方式管理策略端到端测试入口E2E/IncomingCallPolicies 目录提供了针对该功能的 Playwright 场景。遇到问题时建议依次查看 Twilio 控制台的错误日志与 OneUptime 服务器日志两者结合基本可以定位 webhook 回调、TwiML 响应与升级链处理中的具体环节。【免费下载链接】oneuptimeComplete open-source monitoring and observability platform.项目地址: https://gitcode.com/GitHub_Trending/on/oneuptime创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表