توانایی در debug کردن مشکلات میتواند خیلی سریعتر در یافتن راه حل برای آن مشکل هدایت کند. از این سو در این مقاله قصد داریم تا شما را با روشهای debugging در استریسک آشنا سازیم.
به طور کلی استریسک در مورد debugging بر خلاف بعضی از پروژههای دیگر حساسیت بیشتری نشان داده و به شما این قابلیت را میدهد و تا تمامی event های در حال رخ دادن را با توجه به نیاز خود مشاهده نمائید.
debug کردن تماس های SIP:
برای فعال کردن debug sip در کنسول استریسک دستور زیر را وارد کنید.
sip set debug on
همچنین خیلی وقت ها شما میخواهید IP خاصی را debug کنید که برای آن میتوانید یکی از دو دستور زیر را در کنسول استریسک وارد کنید.
sip set debug ip [ip address] sip set debug peer [peer]
با زدن دستورات بالا packet های دریافتی از ip مورد نظر در کنسول استریسک نشان داده میشود. برای مثال هنگامی که سیستم شما پشت NAT قرار گرفته است میتوانید مشاهده کنید که آیا packet از سمت شبکه بیرونی دریافت میکنید یا خیر.
به مثال زیر توجه کنید. خیلی وقت ها هنگام تماس گیری با یک داخلی بدون اینکه داخلی مورد نظر مشغول باشد پیغام زیر در کنسول استریسک نمایش داده میشود.
Everyone is busy/congested at this time
خوب ولی پیغام بالا مشکل اصلی را نمایش نداده و دلیل آن را اشغال داخلی در نظر میگیرید در حالی که با فعال کردن debug پیغام زیر را مشاهده خواهید کرد که دلیل آن در تنظیمات مربوط به کدک ها میباشد.
Found audio description format speex for ID 110 [Jan 19 11:56:44] NOTICE[4159][C-00000006]: chan_sip.c:10150 process_sdp: No compatible codecs, not accepting this offer! <--- Reliably Transmitting (no NAT) to 192.168.1.138:5061 ---> SIP/2.0 488 Not acceptable here Via: SIP/2.0/UDP 192.168.1.138:5061;branch=z9hG4bK-d8754z-02ccf243b3d7264a-1---d8754z-;received=192.168.1.138 From: <sip:[email protected];transport=UDP>;tag=62a0900e To: <sip:[email protected];transport=UDP>;tag=as648c54b6 Call-ID: NTFiM2U3OGNiNTQ0ZDQyNTU5YzE3MWFmOTQ4Mzg2Nzg. CSeq: 2 INVITE Server: Asterisk PBX 11.0.1 Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH Supported: replaces, timer Content-Length: 0
همان طور که میبینید با فعال کردن debug متوجه میشویم که استریسک کد ۴۸۸ را بر میگرداند که نشان دهنده نا سازگار بودن تنظیمات کدک مربوط به گوشی ip و همین طور اسریسک میباشد.
قطع نشدن تماس بر روی کانال های SIP:
از انجایی که برای قطع شدن تماس SIP استریسک نیاز به دریافت packet به همراه هدر BYE دارد اگر در حین مکالمه ارتباط طرفین با پورت SIP استریسک قطع شود، تماس بر روی استریسک باقی خواهند ماند. برای بر طرف کردن این مشکل کافی است که بر روی تنظیمات sip.conf خود rtptimeout را مقدار دهی کنید تا بعد از گذشت آن مقدار و دریافت نکردن rtp تماس قطع شود.