در برخی از خطوط مخابرات که 5رقمی یا 4 رقمی می باشند ، قابلیت اضافه کردن 3 رقم یا 4 رقم به انتهای شماره برای تماس های خروجی وجود دارد که معمولا شماره داخلی به prefix الصاق می شود و به عنوان caller id به مخابرات ارسال می شود که می توان با کامپوننت corrector در سیموتل این مورد را انجام داد.در برخی از مراکز تماس ممکن است مجموع تعداد ارقام داخلی ها و کالر ای دی که به عنوان prefix ملزم به استفاده ار آن هستیم از حد مجاز بیشتر شود.به طور مثال داخلی ها 5رقمی هستند و caller id prefix که ملزم به استفاده در ابتدای caller id هستیم ، 5154544 می باشد و نیاز هست که دو رقم از انتهای شماره داخلی حذف شود و سپس به caller id prefix الصاق یابد. این مورد را با کد زیر در custom plan می توان انجام داد.
[custom-prepend2-5154544]
exten => _X.,1,NoOp(Original CallerID: ${CALLERID(num)})
same => n,Set(NEW_CALLERID=${CALLERID(num):0:-2})
same => n,Set(NEW_CALLERID=5154544${NEW_CALLERID})
same => n,Set(CALLERID(num)=${NEW_CALLERID})
same => n,NoOp(Modified CallerID: ${CALLERID(num)})
same => n,Dial(SIP/TrunkTCI/${EXTEN},60)
same => n,Hangup()
توضیح خط به خط کد
exten => _X.,1,NoOp(Original CallerID: ${CALLERID(num)})
در ابتدا، مقدار اولیه Caller ID را ثبت (لاگ) میکنیم تا بدانیم شماره تماس قبل از تغییر چه بوده است. NoOp فقط یک عملیات لاگگیری است و تغییری در روند تماس ایجاد نمیکند.
same => n,Set(NEW_CALLERID=${CALLERID(num):0:-2})
مقدار جدیدی برای Caller ID تعریف میکنیم و دو رقم آخر شماره اصلی را حذف میکنیم. ${CALLERID(num):0:-2}
یعنی از ابتدای رشته تا دو کاراکتر مانده به انتها را نگه دار.
same => n,Set(NEW_CALLERID=5154544${NEW_CALLERID})
یک پیشوند جدید (5154544
) به ابتدای Caller ID اضافه میشود.حالا شماره تماس خروجی دارای این پیشوند خواهد بود.
same => n,Set(CALLERID(num)=${NEW_CALLERID})
مقدار اصلاحشده را به عنوان Caller ID جدید تنظیم میکنیم تا تماس با این شماره خروجی ارسال شود.
same => n,NoOp(Modified CallerID: ${CALLERID(num)})
مقدار جدید Caller ID را ثبت (لاگ) میکنیم تا مطمئن شویم تغییرات درست اعمال شدهاند.
same => n,Dial(SIP/TrunkTCI/${EXTEN},60)
شماره مورد نظر (${EXTEN}
) را از طریق ترانک SIP/TrunkTCI شمارهگیری میکنیم. 60
به معنای حداکثر زمان انتظار برای پاسخگویی (60 ثانیه) است.
same => n,Hangup()
پس از اتمام تماس، خط را قطع میکنیم.