تم استبدال المحطة الرئيسية وتعلم رشفة وتقرر ترقية النجمة إلى 16.
تم تنفيذ التثبيت على clean debian 10. تحتوي المستودعات على الإصدار 16.2.1 ، لذلك سنقوم بالبناء من المصادر. قم بتنزيل أحدث إصدار من Asterisk 16 ، الذي حصلت عليه في 16.12.0:
cd /usr/src
wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-16-current.tar.gz
فكه في مجلد وانتقل إليه:
tar xzvf asterisk-16-current.tar.gz
cd asterisk-16.*
لنقم الآن بتثبيت جميع التبعيات المطلوبة في دبيان. ليست هناك حاجة لتكرارها يدويًا. يتم جمع كل التبعيات في برنامج نصي يحتاج إلى تشغيل.
contrib/scripts/install_prereq install
بعد ذلك ، قم بتنزيل مصادر mp3 اللازمة لبناء وحدة mp3.
contrib/scripts/get_mp3_source.sh
يتم تثبيت جميع التبعيات ويمكنك المتابعة إلى التجميع.
./configure
make menuselect
إلى ما يتم تثبيته افتراضيًا ، أضيف:
- في علامة التبويب الأولى ، format_mp3.
- في حزم الصوت الأساسية ، أشير إلى أصوات RU-WAV الروسية.
- في حزم الصوت الإضافية ، اخترت الإنجليزية EN-WAV ، للأسف لا يوجد روسي.
تابع بعد قبول الإعدادات بالضغط على Save & Exit. تجميع:
./configure
make
ثم نقوم ببناء الحزمة وتثبيتها باستخدام checkinstall:
checkinstall
نقوم بملء الإصدار واسم الحزمة وما إلى ذلك. أكتب اسم الحزمة asterisk-16 بحيث لا يتعارض مع الاسم الموجود في المستودعات.
checkinstall
أضف مستخدمًا لتشغيل النجمة ومنح أذونات المجلد:
adduser --system --group --home /var/lib/asterisk --no-create-home --gecos "Asterisk" asterisk
usermod -a -G dialout,audio asterisk
chown -R asterisk: /var/{lib,log,run,spool}/asterisk /usr/lib/asterisk /etc/asterisk
نقوم بتكوين النجمة لتعمل تحت هذا المستخدم. للقيام بذلك ، أضف معلمات إلى / etc / default / asterisk config:
AST_USER="asterisk"
AST_GROUP="asterisk"
ثم قم بتحرير /etc/asterisk/modules.conf. نقوم بإزالة الأشياء غير الضرورية ، على سبيل المثال:
noload => chan_sip.so
نبدأ علامة النجمة في وحدة التحكم ونتحقق من عدم وجود أخطاء:
asterisk -cvvv
إذا كان كل شيء على ما يرام ، فقم بإضافة الخدمة لبدء التشغيل والتشغيل:
systemctl enable asterisk
systemctl start asterisk
هذا يكمل التثبيت والمضي قدما في الإعداد.
في PJSIP ، تغيرت البنية بشكل جذري ولن تعمل فقط لنسخ config. يوجد محول تهيئة في المجلد المصدر Contrib / scripts / sip_to_pjsip / sip_to_pjsip.py ، لكن التنسيق به aor منفصل ، ومعرف ، إلخ. غير ملائم وتم العثور على ناتج باستخدام pjsip_wizard. نحتاج فقط إلى إنشاء وسيلة نقل في /etc/asterisk/pjsip.conf ، أضف:
[transport-udp]
type = transport
protocol = udp
bind = x.x.x.x
external_media_address = x.x.x.x
external_signaling_address = x.x.x.x
قم بتغيير xxxx إلى عنوان IP الذي ستستمع إليه.
نقوم بإنشاء نموذج للمستخدم:
[main-template](!)
type=wizard
transport=transport-udp
accepts_auth = yes
accepts_registrations = yes
aor/qualify_frequency = 100
aor/max_contacts = 1
aor/remove_existing = yes
inbound_auth/auth_type = userpass
endpoint/disallow = all
endpoint/allow = alaw
endpoint/dtmf_mode = rfc4733
endpoint/deny = 0.0.0.0/0
endpoint/context = city_out
endpoint/direct_media = no
endpoint/device_state_busy_at = 1
endpoint/language = ru
endpoint/sdp_session = MySDp
وبعد ذلك ، سيكون لدى المستخدم العادي تكوين:
[100](main-template)
endpoint/permit=192.168.100.1
inbound_auth/username=100
inbound_auth/password=P@$$Word123
endpoint/callerid='' <100>
وهذا يشبه إلى حد بعيد تنسيق chan_sip ، ونقوم بتغيير أسماء المعلمات في المحرر باستبدال الكلمات.
للعملاء خلف nat ، بدلاً من nat = نعم ، سنقوم بإنشاء قالب فندق مع إضافة السطور:
endpoint/rtp_symmetric=yes
endpoint/force_rport=yes
endpoint/rewrite_contact=yes
لكي يتصرف pjsip مثل chan_sip ، أي إضافة جهاز نظير واحد. ترسل بعض الهواتف الصينية أحيانًا لسبب ما تسجيلًا ثانيًا من منفذ آخر عندما يكون الأول صالحًا وهذا يسمح لك بتجاوز هذا الخطأ.
aor/max_contacts = 1
aor/remove_existing = yes
إحدى ميزات PJSIP هي التسجيل المتعدد ، والذي لم يكن مدعومًا في chan_sip. قم بتغيير aor / max_contacts إلى المبلغ المطلوب واتصل بخطة الاتصال:
exten => _XXX,1,Dial(${PJSIP_DIAL_CONTACTS(${EXTEN})})
أصبح من الملائم جدًا أن تتمكن من تعيين مجموعات اعتراض بالاسم وليس بالأرقام كما في السابق:
endpoint/named_call_group = aveks
endpoint/named_pickup_group = aveks
كان لـ chan_sip القديم معلمة حد مكالمة تحد من عدد محادثات الأقران. لا يحتوي chan_pjsip الجديد على هذا ، فمن المستحسن في جميع الدردشات تقييد المكالمات بواسطة معلمة GROUP. لسبب ما ، لا يستخدم أي مكان في الكتيبات المعلمة endpoint / device_state_busy_at وإضافته إلى extension.conf إلى السياق الوارد والصادر:
exten => _X.,1,GoSub(subDeviceBusy,s,1(${EXTEN},${CALLERID(num)}))
[subDeviceBusy]
exten => s,1,NoOp(PJSIP/${ARG1} has state ${DEVICE_STATE(PJSIP/${ARG1})})
exten => s,n,NoOp(CallerId is ${ARG2})
exten => s,n,ExecIf($["${DEVICE_STATE(PJSIP/${ARG1})}" = "BUSY"]?Hangup(17))
exten => s,n,Return
يمكنك عرض الخطوط في وحدة تحكم النجمة:
pjsip show endpoint 100
Endpoint: 100/100 Not in use 0 of 1
InAuth: 100-iauth/100
Aor: 100 3
Contact: 100/sip:100@192.168.0.10:5062 c34b4c2d4d Avail 7.981
Transport: transport-udp udp 0 0 192.168.0.1:5060
هنا 0 من 1 يوضح عدد الخطوط المشغولة من الممكن.
في 16 وحدة ماكرو أستريسك أصبحت قديمة لذا كان لا بد من إعادة كتابتها على جوسوب.
من أجل إرسال رقم المتصل عند الاتصال ، أضف رأس التحويل إلى INVITE عند الاتصال:
exten => 2222222,n,Dial(PJSIP/8XXXXXXXXXX@trunk,,tTb(add_diversion^${EXTEN}^1)
[add_diversion]
exten => _XXXXXXX,1,Set(PJSIP_HEADER(add,Diversion)=<sip:XXX${EXTEN}@x.x.x.x>\;reason=unconditional\;screen=yes\;privacy=off)
exten => _XXXXXXX,n,Return()
هنا هو 2222222 رقم المدينة التي تم إعادة التوجيه عليها ، 8XXXXXXXXXX هو الرقم الذي يتم إعادة التوجيه إليه ، وإذا لزم الأمر ، أضف رمز المنطقة بدلاً من XXX sip: XXX $ {EXTEN}xxxx>
لم تكن هناك مشكلات معينة مع ملفات تكوين قائمة الانتظار ، فنحن نغير الأعضاء فقط من SIP إلى PJSIP.
لا تنس استخدام التوثيق
pjsip_wizard.conf
pjsip.conf