FreeSWITCH 呼出成功后自动执行 uuid_debug_media

试了试,貌似这样就可以:

<action application="log" data="DEBUG ${uuid_debug_media(${uuid} both on)}"/>
<action application="set" data="buuid=${create_uuid()}"/>
<action application="log" data="DEBUG buuid=${buuid}"/>
<action application="bridge" data="[absolute_codec_string=PCMA][origination_uuid=${buuid}][api_on_answer='uuid_debug_media ${buuid} both on']sofia/internal/1234@192.168.1.222:5062"/>
 

在跟踪一个rtp方面的bug


目前跟踪到的是这样的:

switch_rtp.c 里面有一个这样的函数:

static int rtp_common_write(switch_rtp_t *rtp_session,
                            rtp_msg_t *send_msg, void *data, uint32_t datalen, switch_payload_t payload, uint32_t timestamp, switch_frame_flag_t *flags)
 

如果是单腿,那么 send_msg 为空,将调用 get_next_write_ts 函数

如果已经 bridged, 那么 send_msg 不为空,将不会调用 get_next_write_ts

然后我们看下面这段代码:

	if (!switch_rtp_test_flag(rtp_session, SWITCH_RTP_FLAG_VIDEO)) {
		
		if ((rtp_session->rtp_bugs & RTP_BUG_NEVER_SEND_MARKER)) {
			m = 0;
		} else {
			int delta = rtp_session->ts - rtp_session->last_write_ts;

			if (!rtp_session->flags[SWITCH_RTP_FLAG_UDPTL] &&
				((!rtp_session->flags[SWITCH_RTP_FLAG_RESET] && (abs(delta) > rtp_session->samples_per_interval * 10))
				|| rtp_session->ts == rtp_session->samples_per_interval)) {
				m++;
			}

个人觉得,某些情况下可能会有问题(目前还不十分确定)

不去做这个检查 `!rtp_session->flags[SWITCH_RTP_FLAG_RESET]`, 似乎更好一些

### Freeswitch `uuid_transfer` 使用方法 Freeswitch 中的 `uuid_transfer` 命令用于将指定 UUID 的呼叫转移到另一个目的地。此命令允许管理员或自动化脚本灵活地控制电话会话的路由。 #### 语法结构 ```bash uuid_transfer <call_uuid> [<destination>|none] [XML|none] ``` - `<call_uuid>` 是要转移的具体通话唯一标识符。 - `[<destination>]` 表示目标地址,可以是 SIP URI 或其他有效的拨号字符串;如果设置为 `none` 则取消当前待处理的转移操作[^1]。 - `[XML|none]` 参数决定是否通过 XML 配置解析来解释目的地址,默认情况下不需要特别指明该选项。 #### 实际应用案例 假设有一个正在进行中的呼叫其UUID为 `1234-abcd-5678-efgh` ,现在希望将其转接到分机号码 `1000` 上: ```bash uuid_transfer 1234-abcd-5678-efgh sip:1000@yourdomain.com ``` 当需要执行无条件转发至语音信箱或其他预设路径时,则可利用 FreeSWITCH 内部配置文件定义好的规则来进行转移而无需显式提供完整的拨打串。 对于某些特殊情况下的问题排查与解决办法如下所示: - **错误提示 "No such call"**: 这通常意味着所提供的 UUID 并不存在于系统内活跃的通话列表里,请确认所使用的 UUID 是否正确以及对应的通话状态。 - **无法成功完成转移** : 可能由于权限不足、网络连接不稳定或是被叫方忙等原因造成,在这种情形下建议检查日志记录获取更多诊断信息并采取相应措施调整环境参数或者联系技术支持团队寻求帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值