تثبيت FreeSWITCH 1.8 على دبيان 9 (امتداد Raspbian ، الصورة الأساسية لنظام المنزل الذكي MajorDoMo على Rasbperri Pi)

أتابع سلسلة قصيرة من المقالات حول إنشاء "المنزل الذكي" وإرشادات خطوة بخطوة للتثبيت / التكوين الذاتي.

ولكن الآن سيكون الأمر بشكل أساسي حول Freeswitch وهاتف IP.

في شهر أغسطس ، قامت شركة Signalwire ، المطور لمنصة الاتصالات الهاتفية المفتوحة VoIP IP FreeSWITCH ، بنشر إصدار عام من إصدار البرنامج الجديد - 1.8. (تم إصدار 1.8.2 بالفعل).
فيما يتعلق بإصدار هذا الإصدار من منصة المهاتفة IP Freesfitch 1.8 ، كان هناك قرار بتثبيته على Raspberry 3 مع تثبيت الصورة الأساسية لنظام المنزل الذكي MajorDoMo ، تحت نظام التشغيل Raspbian (Debian 9 Stretch) مع بعض عناصر الأتمتة المنزلية.



تحت القطع ، وصف لتثبيت نظام VoIP الأساسي من المصدر مع بعض الملاحظات والتفسيرات.

بعد ثلاثة أشهر من إصدار الإصدار 1.8 والإعلان عنه في دليل التثبيت لـ Debian 9 على الموقع الرسمي ، نشرت FreeSWITCH حاليًا تعليمات التثبيت.

تثبيت FreeSWITCH 1.8

ومع ذلك ، لم أتمكن من تثبيت أي من الخيارات في التعليمات على جهاز Rasberry الخاص بي. منذ وقت ليس ببعيد كان هناك تحذير حول عدم التوافق ويجب تثبيته من رموز المصدر. أيضا في الوثائق الرسمية ، يمكنك العثور على التثبيت على Raspberry Pi ، ولكنه قديم بالفعل. لذلك ، سأصف خيار التثبيت الخاص بي على Raspberry P ، مع عمل تعليمات صغيرة خطوة بخطوة. في المقالات السابقة حاولت وصف كيف وأين أبدأ العمل مع المحطة وسطر الأوامر ، لذلك ، إذا كان الأمر مربكًا بعض الشيء ، أوصي بقراءة المقالات السابقة (سيتم إعطاء الروابط في نهاية المقالة). المبدأ هو نفسه ، فعله - لقد عمل ، تحقق مرة أخرى ، تعليمات معدة حتى يتمكن الابن الأكبر من تكرار وفهم القليل عما يفعله وكيف يفعل.

تثبيت FreeSWITCH 1.8.2 من المصدر


الاتصال بتوت العليق عبر المعجون.

لتجنب كتابة sudo قبل كل أمر ، قم بتنفيذ الأمر sudo –i. بعد ذلك ، نعمل مع حقوق مسؤول النظام ، حيث يتم تحويلهم تلقائيًا إلى الدليل الجذر. لمعرفة الدليل الذي أنت فيه ، يمكنك تشغيل الأمر Pwd.

تحديث النظام:

apt-get update apt-get upgrade 

انتقل إلى الدليل الرئيسي ، ثم قم بتنزيل الإصدار 1.8.2 من freeswitch:

 cd /home/pi git clone https://freeswitch.org/stash/scm/fs/freeswitch.git -bv1.8.2 freeswitch 

بعد اكتمال التنزيل ، يظهر مجلد مصدر Freswitch في الدليل الرئيسي. انتقل إليها (المسار الكامل: / home / pi / freeswitch) وقم بتثبيت البرامج اللازمة للبناء من المصدر وانتقل إلى دليل freeswitch:

 cd freeswitch apt-get install autoconf libtool libtool-bin 

قبل تجميع برنامج من المصدر ، يجب عليك أولاً تجميع أداة التهيئة وتشغيل:

 ./bootstrap.sh –j 

تحتوي منصة Freeswitch على هيكل معياري ، لذلك قبل التثبيت ، قم بتحرير قائمة الوحدات الضرورية:

 nano /freeswitch/modules.conf 

بالنسبة للجزء الأكبر ، ظلت القائمة بشكل افتراضي ، لقد قمت بتعطيل بعض برامج ترميز الفيديو ، opal ، png.
وحدة اللغة الروسية المتصلة ، ونقاط نهاية curl mod ، mod_portaudio ،
تثبيت التبعيات لتكوين الخادم والتجميع. نستخدم علامة –y بحيث يجيب الفريق تلقائيًا على جميع أسئلة النظام:

 apt-get install -y g++ zlib1g-dev libjpeg9 pkg-config sqlite3 libsqlite3-dev libcurl4-openssl-dev libpcre3 libpcre3-dev libspeexdsp-dev libldns-dev libedit-dev libtiff-dev apt-get install -y yasm lua5.2 lua5.2-dev libsndfile-dev portaudio19-dev 

تعتمد الحزم التي تقوم بتثبيتها على المكونات الإضافية. إذا كانت الحزمة مفقودة ، فقد يظهر خطأ في الخطوتين التاليتين.

تكوين وتثبيت خادم FreeSWITCH


بعد ذلك ، تحتاج إلى تشغيل أداة التهيئة للتحقق من جميع التبعيات ، بالإضافة إلى تثبيت خيارات بناء إضافية. سيقوم المكوّن ببناء ملف Makefile بناءً على المعرفة المكتسبة وملف makefile.am.

نقوم بتنفيذ الأمر:

 ./configure --enable-system-lua 

إذا سار كل شيء على ما يرام ، نحصل على الرسالة التالية:



دعنا ننتقل إلى التثبيت نفسه:

 make make install 

إذا كانت النتيجة إيجابية ، يتم تثبيت Freeswitch افتراضيًا في دليل /usr/local/freeswitch ؛ في نهاية التكوين ، يمكننا عرض قائمة /usr/local/freeswitch FS.


إذا حدث خطأ أثناء التثبيت أو التهيئة ، مثل mod_lua.cpp: 37: 17: خطأ فادح: lua.h: لا يوجد مثل هذا الملف أو الدليل يتضمن "lua.h" ، فأنت بحاجة إلى تثبيت المكتبات الضرورية باستخدام أمر البحث. لم أتمكن من تثبيت freeswitch مع حزم liblua5.3-0 liblua5.3-dev ، كان علي تثبيت الإصدار 5.2.

 Apt search lua 



تثبيت ملفات الصوت مع دعم اللغة الروسية:

 make cd-sounds-install make cd-sounds-ru-install cd-moh-install 

يمكن إتمام عملية التثبيت.

لمنع كتابة ملفات قاعدة البيانات الصغيرة إلى ذاكرة فلاش وزيادة عمرها الافتراضي ، نضيف السطر في ملف / etc / fstab:

tmpfs /usr/local/freeswitch/db tmpfs defaults 0 0


بعد إعادة التشغيل ، ستتم كتابة الملفات المؤقتة التي تم إنشاؤها بواسطة FS إلى ذاكرة الوصول العشوائي.

إعداد النظام بعد تثبيت FreeSWITCH.


هناك تحذير في وثائق FreeSWITCH ، لذلك لا أوصي بمحاولة تشغيل FS فورًا بعد التثبيت.

** انتباه! إذا قمت بتثبيت FreeSWITCH من المصدر ، فأنت بحاجة إلى تعيين الأذونات على الدلائل والملفات. إذا قمت بتشغيل FreeSWITCH بعد التثبيت ، فسيبدأ افتراضيًا باسم "root". يجب تغيير أذونات الدليل قبل الإطلاق الأولي. **

قم بإنشاء مستخدم جديد وقم بتعيين الأذونات وتغيير المالكين إلى ملفات FreeSwitch

 cd /usr/local groupadd freeswitch adduser --quiet --system --home /usr/local/freeswitch --gecos "FreeSWITCH open source softswitch" --ingroup freeswitch freeswitch --disabled-password chown -R freeswitch:freeswitch /usr/local/freeswitch/ chmod -R ug=rwX,o= /usr/local/freeswitch/ chmod -R u=rwx,g=rx /usr/local/freeswitch/bin/* 

بعد ذلك ، انسخ ملف التشغيل التلقائي إلى systemd ، وأعد تسميته ، وقم بتغيير حقوق الوصول.
يأتي FreeSWITCH مع ملف systemd ، والذي ، إذا تمت تهيئته بشكل صحيح أثناء التمهيد ، يراقب FreeSWITCH ويبدأ تشغيله كبرنامج خفي ، ويعيد تشغيله إذا لم يعمل FS.

 cp /home/pi/freeswitch/debian/freeswitch-systemd.freeswitch.service /etc/systemd/system/freeswitch.service chmod +x /etc/systemd/system/freeswitch.service 

نقوم بعمل رابط لملف الإطلاق وننشئ رابطًا لملف الإطلاق لوحدة تحكم FS:

 ln -s /usr/local/freeswitch/bin/freeswitch /usr/bin/freeswitch ln -s /usr/local/freeswitch/bin/fs_cli /usr/bin/fs_cli 

إضافة خدمة تبديل حر للتحميل التلقائي:

 systemctl enable freeswitch systemctl daemon-reload systemctl start freeswitch 

بعد ذلك ، لم يبدأ FS الخاص بي على أي حال ، فقد أنتج خطأ في ملف * .pid ، لقد قمت للتو بتحرير ملف التشغيل التلقائي nano /etc/systemd/system/freeswitch.service
التعليق على السطر التالي في الملف: # PIDFile = / run / freeswitch / freeswitch.pid.



فقط في حالة ، نحن نحمّل توت العليق (كما تتذكر ، بينما نعمل من الجذر): reboot

بعد إعادة التشغيل ، نعطي الأمر مرة أخرى ندخل من خلال sudo -i ، ونشغل htop ونرى عمليات FreeSWITCH قيد التشغيل.

قليلا عن الإعدادات الأولية:

بعد التثبيت ، يكون FreeSWITCH جاهزًا للعمل ، افتراضيًا ، يوجد 20 مشتركًا بأرقام 1000-1019. تم تحديد كلمة المرور الافتراضية لمشتركي VoIP في ملف /usr/local/freeswitch/conf/vars.xml وهي 1234. الدليل / usr / local / freeswitch / conf / derectory / default يحتوي على 20 ملف xml ، كل منها مسؤول عن المشترك مع الرقم المقابل. يمكننا تعيين كلمة مرور لكل مشترك ، وتغيير اسم الملف والبيانات في محتوياته ، يمكننا تغيير رقم وقدرة المشترك.

إذا كنت بحاجة إلى القيام بذلك ، فبعد تحرير الملفات ، تحتاج إلى بدء وحدة تحكم fs_cli : fs_cli وفي نافذة وحدة التحكم نعطي الأمر reloadxml . باستخدام هذا الأمر ، يعيد FS قراءة ملفات XML ويقبل التغييرات.



الخروج من وحدة التحكم: ctrl+D أو بكتابة /exit أو /quit

الآن دعنا نحاول الاتصال بمشتركي IP. للتحقق من الاتصال ، استخدمته على جهاز كمبيوتر شخصي يعمل بنظام Windows: MicroSIP و PhonerLite softphone وعلى هاتف محمول يعمل بنظام التشغيل Android CSipSimle OS ، الإعدادات هي على النحو التالي (اسم الحساب - رقم الهاتف ، خادم SIP - عنوان Raspberry الخاص بنا:
يعني الرمز الأخضر في شريط الحالة السفلي لهذه البرامج أن المشترك مفوض على خادم VoIP الخاص بنا وجاهز للتواصل.



من خلال الاتصال بالرقم ، يمكننا التحقق من مكالمة المشترك وبعض الوظائف الأخرى لـ IP PBX.
لكني لا أرى تطبيقًا خاصًا في المنزل لمكتب PBX نموذجي. دعونا نحاول استخدام ميزات أكثر تقدمًا من FreeSWITCH.

يحتوي Freeswitch على بنية معيارية ، يمكن عرض المكونات الإضافية في الملف
modules.conf.xml

دعونا نقوم بتحريره ، قمت بإيقاف تشغيل برامج ترميز الفيديو وقمت بتوصيل وحدة اللغة الروسية وكذلك mod_xml_rpc.

  nano /usr/local/freeswitch/conf/autoload_configs/modules.conf.xml</>      <source><!-- --> 

في السطر قبل اسم الوحدة وبعده. تعطيل - على العكس من ذلك ، بوضع هذه الرموز ، على سبيل المثال صغير ، الوحدة الأولى قيد التشغيل ، والثانية معطلة:

 <load module="mod_xml_rpc"/> <!-- <load module="mod_xml_curl"/> --> 

بعد ذلك ، إذا كنت ترغب في التغيير ، نقوم بتحرير الإعدادات البسيطة (المنفذ ، المستخدم ، كلمة المرور) للوحدة نفسها في ملف xml_rpc.conf.xml ، الموجود في نفس الدليل.
nano /usr/local/freeswitch/conf/autoload_configs/modules.conf.xml

الافتراضي: المستخدم - فريشويتش ، يعمل كلمة المرور ، المنفذ 8080.

نحن نحمل التحميل الزائد إما frisvitch أو الخادم نفسه. هناك عدة طرق للقيام بذلك: إعادة تشغيل النظام بأكمله (إعادة التشغيل) باستخدام أوامر التحكم في الخدمة: systemctl stop freeswitch ثم systemctl start freeswitch أو systemctl restart freeswitch .

بعد ذلك ، كتابة http://IP_RASPBERRY:8080/portal/index.html# في المتصفح والذهاب تحت مفتاح المستخدم الحر مع عمل كلمة المرور ندخل إلى لوحة إدارة FreesWITCH الصغيرة. يمكننا رؤية الحالة والمستخدمين المسجلين وما إلى ذلك.



دعونا نحاول الذهاب إلى أبعد من ذلك بقليل:

تؤدي كتابة طلب في المتصفح إلى عرض حالة FS:

 http://freeswitch:works@IP_RASPBERRY:8080/webapi/sofia?status%20profile%20internal 



بناء الجملة بسيط للغاية ، إذا كان الأمر يحتوي على أكثر من كلمة واحدة ، فإن الكلمات الأولى والثانية مفصولة بعلامة استفهام ، والباقي بمسافات.

دعنا نحاول تنفيذ هذا الأمر من MajorDoMo: من الصفحة الرئيسية لـ "المنزل الذكي" ، انتقل إلى لوحة التحكم - وحدة التحكم

نكتب فيه الأمر:

 GetURL("http://freeswitch:works@IP_RASPBERRY:8080/webapi/sofia?status%20profile%20internal") 

استجابة لذلك ، نحصل على حالة خادم VoIP الخاص بنا.



جرب الآن التجربة التالية:

تتمثل الفكرة في بدء مكالمة (باستخدام وظيفة الأصل) من جانب Smart Home إلى المشترك برقم 1001 (MicroSip) ، ثم تحويل المكالمة المكتملة إلى خطة الاتصال للمكالمات الصادرة إلى 1002 (PhonerLite). يبدو الأمر API كما يلي: يبدأ المستخدم الافتراضي / 1001 1002 XML في الاتصال برقم وحدة التحكم 1001 ، بعد رفع (رفع تلقائي) الهاتف والرقم و 1002 يتم استدعاؤهم من خطة الاتصال الافتراضية.

نترجمها إلى شكل مفهوم لـ MajorDoMo والمتصفح:

 GetURL("http://freeswitch:works@192.168.43.60:8080/webapi/originate?user/1001%201002%20XML%20default") 

أولاً ، يرن هاتف واحد ، بعد بضع ثوان هناك مكالمة إلى الثانية.



خاتمة ، أو تنفيذ عملي صغير


منذ وقت ليس ببعيد كنت بحاجة إلى إقامة اتصال مع شخص غير قادر جسديًا على الاتصال (الاتصال الهاتفي) عبر الهاتف الخلوي. في الوقت الحالي ، اختفت الحاجة إلى ذلك ، لكنها ما زالت تقرر التحقق من الجدوى. باستخدام بوابة VoIP (حل أكثر فعالية من حيث التكلفة عند إنهاء FXS أو بوابة GSM أكثر تكلفة) ، يمكن تنفيذ زر "المنزل الذكي" اللاسلكي إذا رغبت في ذلك.

الخيار الثاني: نظام المنزل الذكي MajorDoMo لديه مساعد صوتي أليس. الآن يمكنك محاولة توصيل "البيت الذكي" بالمالك وهاتفه النقال عبر الشبكات العامة.

بعض الروابط

موقع ClueCon لمطور FreeSWITCH
توثيق اللغة الإنجليزية FreeSWITCH
موقع المطور MajorDoMo
الجزء الأول: تعليمات صغيرة خطوة بخطوة لتثبيت نظام التشغيل Smart Home استنادًا إلى كمبيوتر Raspberry أحادي اللوحة ووحدة Z-Way RaZberry وبرنامج MajorDoMo
الجزء الثاني: تابع: Z-Way RaZberry module وبرنامج MajorDoMo
الجزء الثالث: الاستمرار في إنشاء منزل ذكي لاسلكي

Source: https://habr.com/ru/post/ar426429/


All Articles