asterisk 对接 移动IMS 外呼接通时返487错误(已解决)

症状:

1.呼入正常

2.外呼部分手机号正常

3.外呼部分号码时,外线一接通,IMS会返回487,然后就挂掉了

经查是maxptime 与移动IMS不匹配造成,移动要求是240,但是asterisk的是150

参考了下面的文档

RTP Packetization - Asterisk Project - Asterisk Project Wiki

尝试了 修改sip_additional.conf

外呼结果是如下,因为这样只能改变ptime ,而 maxptime 超过150时最自动被降为140

asterisk不支持配置maxptime, 所以只能修改源码

vim ./main/codec_builtin.c

static struct ast_codec ulaw = {
	.name = "ulaw",
	.description = "G.711 u-law"
	.type = AST_MEDIA_TYPE_AUDIO,
	.sample_rate = 8000,
	.minimum_ms = 10,
	.maximum_ms = 240, // 原本是150
	.default_ms = 20,
	.minimum_bytes = 80,
	.samples_count = ulaw_samples,
	.get_length = ulaw_length,
	.smooth = 1,
};

static struct ast_codec alaw = {
	.name = "alaw",
	.description = "G.711 a-law",
	.type = AST_MEDIA_TYPE_AUDIO,
	.sample_rate = 8000,
	.minimum_ms = 10,
	.maximum_ms = 240, //原本是150
	.default_ms = 20,
	.minimum_bytes = 80,
	.samples_count = ulaw_samples,
	.get_length = ulaw_length,
	.smooth = 1,
};

static struct ast_codec g729a = {
	.name = "g729",
	.description = "G.729A",
	.type = AST_MEDIA_TYPE_AUDIO,
	.sample_rate = 8000,
	.minimum_ms = 10,
	.maximum_ms = 240,  // 原本是230
	.default_ms = 20,
	.minimum_bytes = 10,
	.samples_count = g729_samples,
	.get_length = g729_length,
	.smooth = 1,
};

这里我只改了ulaw、alaw和g729的编码,因为只用到了这三个,最后,重新编译一下

./configure
make menuselect
make
make install

外呼结果是 maxptime :240 ,问题解决

感谢移动公司李老师的支持

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值