SIP 应用程序开发者的运行时注意事项
在编写会话启动协议 (SIP) 应用程序时,应考虑某些产品运行时行为。
容器可能接受非 SIP URI 模式
如果 SIP 容器因为不知道应用程序所支持的统一资源指示符 (URI) 模式而不能识别请求 URI 中的模式,那么该容器不会拒绝消息。SIP 元素可能支持具有 sip 或 sips 以外的模式的请求 URI,例如 pres: 模式对于现场服务器有特定含义,但该容器不能识别。由应用程序确定是接受还是拒绝特定模式。SIP 元素可能会使用任何可用机制来转换非 SIP URI,从而生成 SIP URI、SIPS URI 或其他模式,如 RFC 2806 [9] 的 tel URI 模式。

引导多容器环境中的请求
在多容器环境中(SIP 代理加上多个 SIP 容器),当应用程序发送一开始打算以外部方式发送但后来接收到的请求,它应使用最前端的负载均衡元素(如果有多个 SIP 代理,那么使用 IP sprayer,如果只有一个 SIP 代理,那么使用 SIP 代理)的主机和端口。如果应用程序使用容器而不是最前端元素的主机名,那么发生故障时请求可能会丢失。
例如,应用程序向其自身发送 INVITE 请求,但该请求必须通过推送式路由头穿过外部记帐系统。应用程序应将 INVITE 请求的 URI 设置为最前端元素的主机和端口,以确保进行故障转移。将通过推送式路由将该请求路由至记帐系统;然后会将其发送回前端负载均衡元素以进行处理。
调用会话侦听器事件
仅当应用程序请求相应的会话对象时,才会调用 SipSessionListener 和 SipApplicationSessionListener 事件。可通过在应用程序中使用表 1中显示的方法来完成此任务。事件 | 方法 |
---|---|
SipSessionListener | getSession() |
SipApplicationSessionListener | getApplicationSession() |