حديقة حيوان VoIP – التزويد

دخول

وفي أحد الأيام، وافقت الإدارة على تجربة لإدخال تقنية الاتصال الهاتفي عبر بروتوكول الإنترنت (IP) في مكتبنا. وبما أن خبرتي في هذا المجال كانت ضئيلة، فقد أثارت المهمة اهتماماً كبيراً عندي وانغمست في دراسة مختلف جوانب الموضوع. وفي نهاية الغوص، قررت أن أشارك المعرفة التي اكتسبتها على أمل أن تكون مفيدة لشخص ما. لذا…

البيانات الأولية

تم اختيار النجمة ونشرها باعتبارها IP PBX. يتكون أسطول الهواتف من أجهزة Cisco 7906g وPanasonic UT-KX123B وGrandstream GXP1400 وDlink DPH-150S(E)/F3 وYealink T19 وT21. يرجع هذا الاختلاف إلى حقيقة أنه كجزء من التجربة، تقرر تجربة القليل من كل شيء من أجل تكوين رأي حول نسبة السعر/الجودة/الملاءمة.

مهمة

تبسيط وتوحيد عملية إعداد الأجهزة الجديدة قدر الإمكان. يجب أن تكون جميع الهواتف متزامنة مع الوقت، وأن يتم تحميل دليل الهاتف من الخادم وتوفير الوصول إلى الإعدادات للمسؤول.

حل هذه المشكلة بسيط - تنفيذ التكوين التلقائي للهواتف، ما يسمى. التزويد. في الواقع، سيتم مناقشة تنفيذي لهذه الوظيفة الرائعة.

تكوين tftpd، dhcpd

لتوزيع الإعدادات على الهواتف، اخترت tftp كخيار عالمي، تدعمه جميع الأنظمة الأساسية، وسهل التكوين والإدارة.

لم يكن هناك حاجة إلى تكوين محدد لـ tftp. لقد قمت بتثبيت tftpd القياسي ووضعت جميع الملفات الضرورية في الدليل الجذر الخاص به.
لقد قمت بوضع ملفات الإعدادات في الدلائل وفقًا للشركة المصنعة للهاتف. صحيح أن جهاز Cisco لم يدخل أبدًا إلى المجلد الخاص به، لذلك اضطررت إلى تخزينه في جذره.

من أجل توجيه الهواتف إلى موقع خادم tftp، استخدمت الخيار-66. بالإضافة إلى ذلك، قام بتقسيمها إلى فئات منفصلة حسب الشركة المصنعة. تلقى كل فصل شريحة عنوان خاصة به ومجلدًا فرديًا لملفات التكوين. بالمناسبة، كان لا بد من حساب الأجهزة من D-Link بواسطة عناوين MAC، لأنها لا توفر معلومات حول الشركة المصنعة في طلب dhcp.

جزء dhcpd.conf

# حدد خيار الخيارات المطلوبة option-66 code 66 = text; فئة "panasonic" { match if substring (معرف فئة البائع الخيار، 0,9،66) = "Panasonic"؛ الخيار الخيار-10.1.1.50 "0,36/باناسونيك/"؛ } class "cisco" { match if substring (option brands-class-identifier,7906) = "Cisco Systems, Inc. IP Phone CP-66"; خيار الخيار-10.1.1.50 "0,11/سيسكو/"؛ } class "grandstream" { match if substring (optioneller-class-identifier,66) = "Grandstream"; خيار الخيار-10.1.1.50 "16,8/جراندستريم/"؛ } class "dlink" { match if (binary-to-ascii (1,4,":":,substring(hardware,8)) = "c3:d3:a8:16,8d") أو (binary-to-ascii) (1,4,":":,substring(hardware,90)) = "94:4:e72:66"); خيار الخيار-10.1.1.50 "0,7/dlink/"؛ } class "yealink" { match if substring (option brands-class-identifier,66) = "Yealink"; خيار الخيار-10.1.1.50 "XNUMX/yealink/"؛ }

كان لا بد من استبعاد الهواتف بالقوة من المجموعة العامة. وبخلاف ذلك، فإنهم لا يريدون الذهاب إلى "حوض التجديف" الخاص بهم.
مثال على إعدادات الشبكة الفرعية

الشبكة الفرعية 10.1.1.0 قناع الشبكة 255.255.255.0 { أجهزة التوجيه الخيارية 10.1.1.1؛ تجمع {رفض أعضاء "سيسكو"؛ حرمان أعضاء "باناسونيك"؛ رفض أعضاء "dlink"؛ النطاق 10.1.1.230 10.1.1.240؛ } تجمع { السماح لأعضاء "سيسكو"؛ النطاق 10.1.1.65 10.1.1.69; } تجمع { السماح لأعضاء "باناسونيك"؛ النطاق 10.1.1.60 10.1.1.64; } تجمع { السماح لأعضاء "dlink"؛ النطاق 10.1.1.55 10.1.1.59؛ } }

بعد إعادة تشغيل جميع الخدمات المعنية، انتقلت الهواتف بثقة إلى خادم tftp المخصص لها لإجراء الإعدادات. كل ما تبقى هو وضعها هناك.

سيسكو 7906

وصلتني هذه الأجهزة في عبوتها الأصلية. اضطررت إلى تغييره لتكوين صداقات مع النجمة. لكن هذه قصة مختلفة. في حالة محددة، لتكوين الجهاز، وفقًا للتعليمات، قمت بإنشاء الملف SEPAABBCCDEEFF.cnf.xml في جذر خادم tftp. حيث AABBCCDDEFF هو عنوان MAC الخاص بالجهاز.

لقد تمت كتابته بالفعل أكثر من مرة حول إعداد الهواتف من Cisco، لذلك سأترك ملف العمل بالإعدادات.
إعدادات سيسكو

<?xml version="1.0" encoding="UTF-8"?>
<device xsi_type="axl:XIPPhone" ctiid="94">
<fullConfig>true</fullConfig>
<deviceProtocol>SIP</deviceProtocol>
<sshUserId>root</sshUserId>
<sshPassword>ADMIN_PWD</sshPassword>
<devicePool>
<dateTimeSetting>
<dateTemplate>D-M-Y</dateTemplate>
<timeZone>Central Pacific Standard Time</timeZone>
<ntps>
<ntp>
<name>10.1.1.4</name>
<ntpMode>Unicast</ntpMode>
</ntp>
</ntps>
</dateTimeSetting>
<callManagerGroup>
<members> <member priority="0"> <callManager>
<name>10.1.1.50</name>
<ports>
<ethernetPhonePort>2000</ethernetPhonePort>
<sipPort>5060</sipPort>
<securedSipPort>5061</securedSipPort>
</ports>
<processNodeName>10.1.1.50</processNodeName>
</callManager> </member> </members>
</callManagerGroup>
<srstInfo>
<srstOption>Disable</srstOption>
</srstInfo>
<connectionMonitorDuration>120</connectionMonitorDuration>
</devicePool>
<sipProfile>
<sipCallFeatures>
<cnfJoinEnabled>true</cnfJoinEnabled>
<callForwardURI>x-cisco-serviceuri-cfwdall</callForwardURI>
<callPickupURI>x-cisco-serviceuri-pickup</callPickupURI>
<callPickupListURI>x-cisco-serviceuri-opickup</callPickupListURI>
<callPickupGroupURI>x-cisco-serviceuri-gpickup</callPickupGroupURI>
<meetMeServiceURI>x-cisco-serviceuri-meetme</meetMeServiceURI>
<abbreviatedDialURI>x-cisco-serviceuri-abbrdial</abbreviatedDialURI>
<rfc2543Hold>false</rfc2543Hold>
<callHoldRingback>2</callHoldRingback>
<localCfwdEnable>true</localCfwdEnable>
<semiAttendedTransfer>true</semiAttendedTransfer>
<anonymousCallBlock>2</anonymousCallBlock>
<callerIdBlocking>2</callerIdBlocking>
<dndControl>0</dndControl>
<remoteCcEnable>true</remoteCcEnable>
<retainForwardInformation>false</retainForwardInformation>
</sipCallFeatures>
<sipStack>
<sipInviteRetx>6</sipInviteRetx>
<sipRetx>10</sipRetx>
<timerInviteExpires>180</timerInviteExpires>
<timerRegisterExpires>3600</timerRegisterExpires>
<timerRegisterDelta>5</timerRegisterDelta>
<timerKeepAliveExpires>120</timerKeepAliveExpires>
<timerSubscribeExpires>120</timerSubscribeExpires>
<timerSubscribeDelta>5</timerSubscribeDelta>
<timerT1>500</timerT1>
<timerT2>4000</timerT2>
<maxRedirects>70</maxRedirects>
<remotePartyID>true</remotePartyID>
<userInfo>None</userInfo>
</sipStack>
<autoAnswerTimer>1</autoAnswerTimer>
<autoAnswerAltBehavior>false</autoAnswerAltBehavior>
<autoAnswerOverride>true</autoAnswerOverride>
<transferOnhookEnabled>false</transferOnhookEnabled>
<enableVad>false</enableVad>
<preferredCodec>none</preferredCodec>
<dtmfAvtPayload>101</dtmfAvtPayload>
<dtmfDbLevel>3</dtmfDbLevel>
<dtmfOutofBand>avt</dtmfOutofBand>
<kpml>3</kpml>
<alwaysUsePrimeLine>false</alwaysUsePrimeLine>
<alwaysUsePrimeLineVoiceMail>false</alwaysUsePrimeLineVoiceMail>
<phoneLabel>Cisco Phone</phoneLabel>
<stutterMsgWaiting>2</stutterMsgWaiting>
<callStats>false</callStats>
<offhookToFirstDigitTimer>15000</offhookToFirstDigitTimer>
<silentPeriodBetweenCallWaitingBursts>10</silentPeriodBetweenCallWaitingBursts>
<disableLocalSpeedDialConfig>true</disableLocalSpeedDialConfig>
<poundEndOfDial>false</poundEndOfDial>
<startMediaPort>16384</startMediaPort>
<stopMediaPort>32766</stopMediaPort>
<sipLines>
<line button="1" lineIndex="1">
<featureID>9</featureID>
<proxy>10.1.1.50</proxy>
<port>5060</port>
<autoAnswer> <autoAnswerEnabled>2</autoAnswerEnabled> </autoAnswer>
<callWaiting>3</callWaiting>
<sharedLine>false</sharedLine>
<messageWaitingLampPolicy>3</messageWaitingLampPolicy>
<messagesNumber></messagesNumber>
<ringSettingIdle>4</ringSettingIdle>
<ringSettingActive>5</ringSettingActive>
<forwardCallInfoDisplay>
<callerName>true</callerName>
<callerNumber>true</callerNumber>
<redirectedNumber>false</redirectedNumber>
<dialedNumber>true</dialedNumber>
</forwardCallInfoDisplay>
<featureLabel></featureLabel>
<displayName>User #103</displayName>
<name>103</name>
<authName>103</authName>
<authPassword>SIP_PWD</authPassword>
</line>
</sipLines>
<externalNumberMask>$num</externalNumberMask>
<voipControlPort>5060</voipControlPort>
<dscpForAudio>184</dscpForAudio>
<ringSettingBusyStationPolicy>0</ringSettingBusyStationPolicy>
<dialTemplate>dialplan.xml</dialTemplate>
</sipProfile>
<commonProfile>
<phonePassword>*0#</phonePassword>
<backgroundImageAccess>true</backgroundImageAccess>
<callLogBlfEnabled>2</callLogBlfEnabled>
</commonProfile>
<loadInformation></loadInformation>
<vendorConfig>
<disableSpeaker>false</disableSpeaker>
<disableSpeakerAndHeadset>false</disableSpeakerAndHeadset>
<forwardingDelay>1</forwardingDelay>
<pcPort>0</pcPort>
<settingsAccess>1</settingsAccess>
<garp>0</garp>
<voiceVlanAccess>0</voiceVlanAccess>
<videoCapability>0</videoCapability>
<autoSelectLineEnable>1</autoSelectLineEnable>
<webAccess>0</webAccess>
<daysDisplayNotActive>1,7</daysDisplayNotActive>
<displayOnTime>09:00</displayOnTime>
<displayOnDuration>12:00</displayOnDuration>
<displayIdleTimeout>01:00</displayIdleTimeout>
<spanToPCPort>1</spanToPCPort>
<loggingDisplay>2</loggingDisplay>
<loadServer>10.1.1.50</loadServer>
<recordingTone>0</recordingTone>
<recordingToneLocalVolume>100</recordingToneLocalVolume>
<recordingToneRemoteVolume>50</recordingToneRemoteVolume>
<recordingToneDuration></recordingToneDuration>
<displayOnWhenIncomingCall>0</displayOnWhenIncomingCall>
<rtcp>0</rtcp>
<moreKeyReversionTimer>5</moreKeyReversionTimer>
<autoCallSelect>1</autoCallSelect>
<logServer>10.1.1.50</logServer>
<g722CodecSupport>0</g722CodecSupport>
<headsetWidebandUIControl>0</headsetWidebandUIControl>
<handsetWidebandUIControl>0</handsetWidebandUIControl>
<headsetWidebandEnable>0</headsetWidebandEnable>
<handsetWidebandEnable>0</handsetWidebandEnable>
<peerFirmwareSharing>0</peerFirmwareSharing>
<enableCdpSwPort>1</enableCdpSwPort>
<enableCdpPcPort>1</enableCdpPcPort>
</vendorConfig>
<versionStamp>1143565489-a3cbf294-7526-4c29-8791-c4fce4ce4c37</versionStamp>
<userLocale>
<name>Russian_Russian_Federation</name>
<langCode>ru_RU</langCode>
<version></version>
<winCharSet>utf-8</winCharSet>
</userLocale>
<networkLocale></networkLocale>
<networkLocaleInfo>
<name></name>
<version></version>
</networkLocaleInfo>
<deviceSecurityMode>1</deviceSecurityMode>
<idleTimeout>0</idleTimeout>
<authenticationURL></authenticationURL>
<directoryURL>http://10.1.1.50/provisioning/cisco-services.xml</directoryURL>
<idleURL></idleURL>
<informationURL></informationURL>
<messagesURL></messagesURL>
<proxyServerURL></proxyServerURL>
<servicesURL>http://10.1.1.50/provisioning/cisco-services.xml</servicesURL>
<dscpForSCCPPhoneConfig>96</dscpForSCCPPhoneConfig>
<dscpForSCCPPhoneServices>0</dscpForSCCPPhoneServices>
<dscpForCm2Dvce>96</dscpForCm2Dvce>
<transportLayerProtocol>2</transportLayerProtocol>
<singleButtonBarge>0</singleButtonBarge>
<capfAuthMode>0</capfAuthMode>
<capfList><capf>
<phonePort>3804</phonePort>
<!-- <processNodeName>10.1.1.50</processNodeName> -->
</capf> </capfList>
<certHash></certHash>
<encrConfig>false</encrConfig>
<advertiseG722Codec>1</advertiseG722Codec>
</device>

دي لينك DPH-150S/F3

إذا كنت على وشك شراء هاتف من هذه السلسلة، فكن حذرًا، فالضبط التلقائي مدعوم فقط في أجهزة 150S/F3. في جهاز 150S/F2 الذي كان بين يدي، لم أجد مثل هذه الوظيفة.

يمكن أن يكون ملف التكوين بتنسيق xml أو نص عادي. هناك متطلب واحد لـ XML: يجب أن تكون العلامة في بداية السطر، وإلا فسوف يتجاهلها المحلل اللغوي ولن تتغير قيمة المعلمة المقابلة.

يتم استخدام ملفين لتكوين الهاتف. f0D00580000.cfg - لتخزين الإعدادات لجميع الهواتف و00112233aabb.cfg (عنوان MAC بالأحرف الصغيرة) للإعدادات الفردية. من الطبيعي أن يكون للإعدادات الفردية أولوية أعلى.

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

العقدة الجذرية مطلوبة VOIP_CONFIG_FILE والعقدة متداخلة داخلها الإصدار. سيتم تطبيق الإعدادات فقط إذا كان إصدار الملف أعلى من الإعدادات الحالية في الجهاز. ويمكنك معرفة هذه القيمة من خلال واجهة الويب الخاصة بالهاتف في قسم الصيانة (إدارة النظام). بالنسبة للهواتف ذات إعدادات المصنع، ففي كلتا الحالتين يكون 2.0002. بالإضافة إلى ذلك، يجب أن يكون إصدار الملف الفردي أكبر من إصدار الملف المشترك.

أولاً سأقدم ملفًا بتكوين مشترك لجميع الهواتف. في الواقع، فهو يقوم بتخزين جميع الإعدادات، وسيكون الملف الفردي مسؤولاً فقط عن رقم الهاتف والنقش الموجود على الشاشة.

في الكتلتين أدناه، يتم تعيين المنطقة الزمنية ومعلمات مزامنة الوقت، ويتم تمكين المنفذ الأولي لـ RTP وجسر الشبكة بين موصلات WAN وLAN الخاصة بالجهاز.

الجزء رقم 1

<GLOBAL_CONFIG_MODULE>
<WAN_Mode>DHCP</WAN_Mode>
<Default_Protocol>2</Default_Protocol>
<Enable_DHCP>1</Enable_DHCP>
<DHCP_Auto_DNS>1</DHCP_Auto_DNS>
<DHCP_Auto_Time>0</DHCP_Auto_Time>
<Host_Name>VOIP</Host_Name>
<RTP_Initial_Port>10000</RTP_Initial_Port>
<RTP_Port_Quantity>200</RTP_Port_Quantity>
<SNTP_Server>10.1.1.4</SNTP_Server>
<Enable_SNTP>1</Enable_SNTP>
<Time_Zone>71</Time_Zone>
<Time_Zone_Name>UCT_011</Time_Zone_Name>
<Enable_DST>0</Enable_DST>
<SNTP_Timeout>60</SNTP_Timeout>
<Default_UI>12</Default_UI>
<MTU_Length>1500</MTU_Length>
</GLOBAL_CONFIG_MODULE>
<LAN_CONFIG_MODULE>
<Enable_Bridge_Mode>1</Enable_Bridge_Mode>
<Enable_Port_Mirror>1</Enable_Port_Mirror>
</LAN_CONFIG_MODULE>

الأسماء الفعلية لمعلمات التكوين وصفية بدرجة كافية لتجنب وصفها بالتفصيل.
SIP لخط واحد

<SIP_CONFIG_MODULE>
<SIP__Port>5060</SIP__Port>
<SIP_Line_List>
<SIP_Line_List_Entry>
<ID>SIP1</ID>
<Register_Addr>10.1.1.50</Register_Addr>
<Register_Port>5060</Register_Port>
<Register_TTL>3600</Register_TTL>
<Enable_Reg>1</Enable_Reg>
<Proxy_Addr>10.1.1.50</Proxy_Addr>
<DTMF_Mode>1</DTMF_Mode>
<DTMF_Info_Mode>0</DTMF_Info_Mode>
<VoiceCodecMap>G711A,G711U,G722</VoiceCodecMap>
</SIP_Line_List_Entry>
</SIP_Line_List>
</SIP_CONFIG_MODULE>

إعدادات التحكم عن بعد

<MMI_CONFIG_MODULE>
<Telnet_Port>23</Telnet_Port>
<Web_Port>80</Web_Port>
<Web_Server_Type>0</Web_Server_Type>
<Https_Web_Port>443</Https_Web_Port>
<Remote_Control>1</Remote_Control>
<Enable_MMI_Filter>0</Enable_MMI_Filter>
<Telnet_Prompt></Telnet_Prompt>
<MMI_Filter>
<MMI_Filter_Entry>
<ID>Item1</ID>
<First_IP>10.1.1.152</First_IP>
<End_IP>10.1.1.160</End_IP>
</MMI_Filter_Entry>
</MMI_Filter>
<MMI_Account>
<MMI_Account_Entry>
<ID>Account1</ID>
<Name>admin</Name>
<Password>ADMIN_PWD</Password>
<Level>10</Level>
</MMI_Account_Entry>
<MMI_Account_Entry>
<ID>Account2</ID>
<Name>guest</Name>
<Password>GUEST_PWD</Password>
<Level>5</Level>
</MMI_Account_Entry>
</MMI_Account>
</MMI_CONFIG_MODULE>

اعدادات الهاتف

<PHONE_CONFIG_MODULE>
<Menu_Password>123</Menu_Password>
<KeyLock_Password>123</KeyLock_Password>
<Fast_Keylock_Code></Fast_Keylock_Code>
<Enable_KeyLock>0</Enable_KeyLock>
<Emergency_Call>112</Emergency_Call>
<LCD_Title>Company</LCD_Title>
<LCD_Constrast>5</LCD_Constrast>
<LCD_Luminance>1</LCD_Luminance>
<Backlight_Off_Time>30</Backlight_Off_Time>
<Enable_Power_LED>0</Enable_Power_LED>
<Time_Display_Style>0</Time_Display_Style>
<Enable_TimeDisplay>1</Enable_TimeDisplay>
<Alarm__Clock>0,,1</Alarm__Clock>
<Date_Display_Style>0</Date_Display_Style>
<Date_Separator>0</Date_Separator>
<Enable_Pre-Dial>1</Enable_Pre-Dial>
<Xml_PhoneBook>
<Xml_PhoneBook_Entry>
<ID>XML-PBook1</ID>
<Name>Phonebook</Name>
<Addr>http://10.1.1.50/provisioning/dlink-phonebook.xml</Addr>
<Auth>:</Auth>
<Policy>0</Policy>
<Sipline>0</Sipline>
</Xml_PhoneBook_Entry>
</Xml_PhoneBook>
<Phonebook_Groups>friend,home,work,business,classmate,colleague</Phonebook_Groups>
</PHONE_CONFIG_MODULE>

ستبقى جميع الإعدادات الأخرى "افتراضية". الآن سيقبل أي هاتف Dlink متصل بالشبكة على الفور مجموعة مشتركة من المعلمات للجميع. لتعيين المعلمات الفردية للجهاز، هناك حاجة إلى ملف منفصل. تحتاج فيه فقط إلى تحديد الإعدادات اللازمة لمشترك فردي.
إعدادات المشتركين

<?xml version="1.0" encoding="UTF-8"?>
<VOIP_CONFIG_FILE>
<version>2.0006</version>
<SIP_CONFIG_MODULE>
<SIP_Line_List>
<SIP_Line_List_Entry>
<ID>SIP1</ID>
<Display_Name>User #117</Display_Name>
<Phone_Number>117</Phone_Number>
<Register_Port>5060</Register_Port>
<Register_User>117</Register_User>
<Register_Pswd>SIP_PWD</Register_Pswd>
<Register_TTL>3600</Register_TTL>
<Enable_Reg>1</Enable_Reg>
<Proxy_Port>5060</Proxy_Port>
<Proxy_User>117</Proxy_User>
<Proxy_Pswd>SIP_PWD</Proxy_Pswd>
</SIP_Line_List_Entry>
</SIP_Line_List>
</SIP_CONFIG_MODULE>
</VOIP_CONFIG_FILE>

باناسونيك UT-KX123B

تتلقى هذه الأجهزة الإعدادات وفقًا لنظام مختلف قليلاً. يتم تخزين التكوين في ملفات نصية. الحد الأقصى لحجم ملف التكوين هو 120 كيلو بايت. وبغض النظر عن عدد الملفات، يجب ألا يتجاوز حجمها الإجمالي 120 كيلو بايت.
يتكون ملف التكوين من مجموعة من الأسطر، والتي تخضع للشروط التالية:

  • السطر الأول هو دائمًا سطر تعليق، بما في ذلك التسلسل التالي من الأحرف (44 بايت):
    # ملف التنسيق القياسي للهاتف SIP من باناسونيك #
    التمثيل الست عشري لهذا التسلسل:
    23 20 50 61 6E 61 73 6F 6E 69 63 20 53 49 50 20 50 68 6F 6E 65 20 53 74 61 6E 64 61 72 64 20 46 6F 72 6D 61 74 20 46 69 6 ج65
    لمنع التغييرات غير المقصودة في تسلسل الأحرف المحدد، يوصى ببدء ملف التكوين بالسطر:
    # ملف التنسيق القياسي للهاتف SIP من باناسونيك # لا تغير هذا الخط!
  • يجب أن تنتهي ملفات التكوين بسطر فارغ.
  • يجب أن ينتهي كل سطر بالتسلسل " ".
  • الحد الأقصى لطول السلسلة هو 537 بايت، بما في ذلك التسلسل " "
  • يتم تجاهل الأسطر التالية:
    • الخطوط التي تتجاوز الحد الأقصى البالغ 537 بايت؛
    • خطوط فارغة
    • سطور التعليق التي تبدأ بـ "#"؛
  • تتم كتابة السلسلة لكل معلمة في النموذج XXX = "yyy" (XXX: اسم المعلمة، yyy: قيمتها). يجب أن تكون القيمة محاطة بعلامات اقتباس مزدوجة.
  • غير مسموح بتقسيم سطر المعلمة إلى عدة أسطر. سيؤدي هذا إلى حدوث خطأ في معالجة ملف التكوين، ونتيجة لذلك، فشل التهيئة.
  • يجب تحديد قيم بعض المعلمات بشكل منفصل لكل سطر. المعلمة ذات اللاحقة "_1" في الاسم هي معلمة السطر 1؛ "_2" — للسطر 2، وما إلى ذلك.
  • الحد الأقصى لطول اسم المعلمة هو 32 حرفًا.
  • الحد الأقصى لطول قيمة المعلمة هو 500 حرف باستثناء أحرف الاقتباس المزدوجة.
  • لا يُسمح بمسافات في السلسلة ما لم تتضمن القيمة حرف مسافة.
  • يمكن تحديد بعض قيم المعلمات على أنها "فارغة" لتعيين المعلمة على قيمة فارغة.
  • يتم تحديد المعلمات في أي ترتيب معين.
  • إذا تم تحديد نفس المعلمة أكثر من مرة في ملف التكوين، فسيتم تطبيق القيمة المحددة أولاً.

بصراحة، أزعجتني هذه المجموعة الجادة من المتطلبات لملف التكوين. في رأيي، فإن تنفيذ التفاعل مع خادم التحكم على هواتف باناسونيك غير مريح للغاية. في هذه المعلمة، يكون الهاتف أدنى بكثير من الآخرين.
عند تشغيل الجهاز لأول مرة (أو بعد إعادة ضبطه على إعدادات المصنع)، فإنه يحاول تحميل ما يسمى بملف المنتج (في هذه الحالة هو KX-UT123RU.cfg)، والذي يجب أن يحتوي على المسارات إلى ملفات التكوين المتبقية.
ملف المنتج# ملف التنسيق القياسي للهاتف SIP من باناسونيك # لا تغير هذا الخط!

CFG_STANDARD_FILE_PATH="tftp://10.1.1.50/panasonic/{mac}.cfg"
CFG_PRODUCT_FILE_PATH="tftp://10.1.1.50/panasonic/KX-UT123RU.cfg"
CFG_MASTER_FILE_PATH="tftp://10.1.1.50/panasonic/master.cfg"

بعد ذلك، سيعرض الهاتف رسالة تفيد بإتمام الإعداد بنجاح وسينتظر حتى يتم إعادة تشغيله. وبعد إعادة التشغيل، سيبدأ في معالجة ملفات التكوين المخصصة له.

يوصى بتحديد الإعدادات العامة لجميع الهواتف في ملف master.cfg. كما هو الحال مع Dlink، سأحدد فقط بعض المعلمات. يمكن العثور على أسماء المعلمات المتبقية وقيمها في الوثائق الموجودة على موقع الشركة المصنعة.
سيد. cfg################################################## ##########
#اعدادات النظام#
################################################## ##########
## إعدادات حساب تسجيل الدخول
ADMIN_ID = "المسؤول"
ADMIN_PASS="ADMIN_PWD"
USER_ID = "المستخدم"
USER_PASS = "USER_PWD"

## إعدادات وقت النظام
NTP_ADDR="10.1.1.4"
المنطقة الزمنية = "660"
DST_ENABLE = "N"
DST_OFFSET = "60"
DST_START_MONTH="3"
DST_START_ORDINAL_DAY="2"
DST_START_DAY_OF_WEEK="0"
DST_START_TIME="120"
DST_STOP_MONTH="10"
DST_STOP_ORDINAL_DAY="2"
DST_STOP_DAY_OF_WEEK="0"
DST_STOP_TIME="120"
LOCAL_TIME_ZONE_POSIX = ""

## إعدادات سجل النظام
SYSLOG_ADDR="10.1.1.50"
SYSLOG_PORT = "514"
SYSLOG_EVENT_SIP="6"
SYSLOG_EVENT_CFG="6"
SYSLOG_EVENT_VOIP="6"
SYSLOG_EVENT_TEL="6"

## إعدادات التوفير
OPTION66_ENABLE = "ص"
OPTION66_REBOOT = "ن"
PROVISION_ENABLE = "Y"
CFG_STANDARD_FILE_PATH="tftp://10.1.1.50/panasonic/{mac}.cfg"
CFG_PRODUCT_FILE_PATH="tftp://10.1.1.50/panasonic/KX-UT123RU.cfg"
CFG_MASTER_FILE_PATH="tftp://10.1.1.50/panasonic/master.cfg"

################################################## ##########
#اعدادات الشبكة#
################################################## ##########
## إعدادات IP
CONNECTION_TYPE = "1"
HOST_NAME="UT123"
DHCP_DNS_ENABLE = "Y"
STATIC_IP_ADDRESS = ""
STATIC_SUBNET = ""
STATIC_GATEWAY = ""
USER_DNS1_ADDR = ""
USER_DNS2_ADDR = ""

## إعدادات DNS
DNS_QRY_PRLL = "Y"
DNS_PRIORITY = "N"
DNS1_ADDR = "10.1.1.1"
DNS2_ADDR = ""

## إعدادات HTTP
HTTPD_PORTOPEN_AUTO = "Y"
HTTP_VER = "1"
HTTP_USER_AGENT="Panasonic_{MODEL}/{fwver} ({mac})"
HTTP_SSL_VERIFY="0"
CFG_ROOT_CERTIFICATE_PATH = ""

## إعدادات تطبيق XML
XML_HTTPD_PORT = "6666"
XMLAPP_ENABLE = "Y"
XMLAPP_USERID = ""
XMLAPP_USERPASS = ""
XMLAPP_START_URL=""
XMLAPP_INITIAL_URL = " "
XMLAPP_INCOMING_URL = ""
XMLAPP_TALKING_URL = ""
XMLAPP_MAKECALL_URL = ""
XMLAPP_CALLLOG_URL = ""
XMLAPP_IDLING_URL = ""
XMLAPP_LDAP_URL="10.1.1.50/provisioning/panasonic-phonebook.xml»
XMLAPP_LDAP_USERID = ""
XMLAPP_LDAP_USERPASS = ""

تقليديًا، تبقى إعدادات المشترك فقط في ملف تكوين الجهاز الفردي.
aabbccddeeff.cfgDISPLAY_NAME_1="المستخدم رقم 168"

PHONE_NUMBER_1="168"
SIP_URI_1="168"
LINE_ENABLE_1="ممكّن"
PROFILE_ENABLE_1="ممكّن"
SIP_AUTHID_1="168"
SIP_PASS_1="SIP_PWD"

جراندستريم GXP-1400

يتم تخزين معلمات هذه الهواتف في ملف xml واحد يسمى cfg{mac}.xml. أو بنص عادي بالاسم cfg{mac}. لا يطلب هذا الهاتف سوى ملف تكوين فردي، لذا فإن تحسين الإعدادات عن طريق نقلها إلى ملف مشترك لن ينجح. ميزة أخرى لإعداد Grandstreams هي تسمية المعلمات. تم ترقيمها جميعًا وتعيينها كـ P###. على سبيل المثال:

P1650 – المسؤول عن واجهة الويب لإدارة الهاتف (0 – HTTPS، 1 – HTTP)
P47 - عنوان خادم SIP للاتصال.

إذا تم تخزين التكوين في ملف نصي، فإن المعلمات لا تتطلب أي تجميع وتكون بأي ترتيب. يتم التعامل مع الأسطر التي تبدأ بـ # كتعليقات.

إذا تم تقديم الإعدادات بتنسيق XML، فيجب أن تكون متداخلة في عقدة ، والتي بدورها يجب أن تكون متداخلة . تتم كتابة جميع المعلمات في شكل علامات مقابلة مع قيمة المعلمة بداخلها.
وضع المثال

1.0 8 1 1 SIP_PWD المستخدم رقم 271 1 271 270 109 ADMIN_PWD USER_PWD رو 270 35/جراندستريم 109 TZc-35 36 109 http://36/provisioning/grandstream ثلاثون

يالينك T19 وT21

تدعم أجهزة هذه النماذج ملفات التكوين الفردية للأجهزة والملفات الشائعة للنماذج. في حالتي، كان علي أن أضع المعلمات العامة في الملفين y000000000031.cfg وy000000000034.cfg، على التوالي. تتم تسمية ملفات التكوين الفردية وفقًا لعنوان MAC: 00112233aabb.cfg.

يتم تخزين إعدادات الروابط Yealinks بتنسيق نصي. المتطلبات الإلزامية الوحيدة هي وجود إصدار الملف في السطر الأول، بالتنسيق #!version:1.0.0.1.

تتم كتابة جميع المعلمات في النموذج المعلمة = القيمة. يجب أن تبدأ التعليقات بالحرف "#". يمكن العثور على أسماء المعلمات وقيمها في الوثائق الموجودة على موقع الشركة المصنعة.
الاعدادات العامة#!الإصدار:1.0.0.1
# تكوين نوع منفذ WAN؛ 0-DHCP (افتراضي)، 1-PPPoE، 2-عنوان IP ثابت؛
Network.internet_port.type = 0
# تكوين نوع منفذ الكمبيوتر؛ 0-جهاز التوجيه، 1-الجسر (افتراضي)؛
Network.bridge_mode = 1
# تكوين نوع الوصول لخادم الويب؛ 0-معطل، 1-HTTP وHTTPS (افتراضي)، 2-HTTP فقط، 3-HTTPS فقط؛
شبكة.web_server_type = 3
# تكوين الحد الأقصى لمنفذ RTP المحلي. يتراوح من 0 إلى 65535، القيمة الافتراضية هي 11800.
Network.port.max_rtpport = 10100
# تكوين الحد الأدنى لمنفذ RTP المحلي. ويتراوح من 0 إلى 65535، والقيمة الافتراضية هي 11780.
Network.port.min_rtpport = 10000
Security.user_name.admin = root
Security.user_password = root:ADMIN_PWD
Security.user_name.user = user
Security.user_password = المستخدم:USER_PWD
#حدد لغة الويب، القيم الصالحة هي: الإنجليزية والصينية والتركية والبرتغالية والإسبانية والإيطالية والفرنسية والروسية والألمانية والتشيكية.
lang.wui = روسي
#حدد لغة شاشة LCD، القيم الصالحة هي: الإنجليزية (الافتراضية)، الصينية_S، الصينية_T، الألمانية، الفرنسية، التركية، الإيطالية، البولندية، الإسبانية والبرتغالية.
lang.gui = الروسية
# تكوين المنطقة الزمنية واسم المنطقة الزمنية. تتراوح المنطقة الزمنية من -11 إلى +12، والقيمة الافتراضية هي +8.
# اسم المنطقة الزمنية الافتراضية هو الصين (بكين).
#ارجع إلى دليل مستخدم هواتف Yealink IP لمزيد من المناطق الزمنية المتاحة وأسماء المناطق الزمنية.
local_time.time_zone = +11
local_time.time_zone_name = فلاديفوستوك
# تكوين اسم المجال أو عنوان IP لخادم NTP. القيمة الافتراضية هي cn.pool.ntp.org.
local_time.ntp_server1 = 10.1.1.4
# تكوين وضع الشعار لشاشة LCD؛ 0-معطل (افتراضي)، 1-شعار النظام، 2-شعار مخصص؛
phone_setting.lcd_logo.mode = 1
# قم بتكوين عنوان URL للوصول واسم العرض لدليل الهاتف البعيد. يتراوح X من 1 إلى 5.
Remote_phonebook.data.1.url = 10.1.1.50/provisioning/yealink-phonebook.xml
Remote_phonebook.data.1.name = دليل الهاتف
Features.remote_phonebook.flash_time = 3600

الإعدادات الفردية#!الإصدار:1.0.0.1
# تمكين أو تعطيل الحساب1، 0-معطل (افتراضي)، 1-ممكّن؛
الحساب.1.تمكين = 1
# قم بتكوين الملصق المعروض على شاشة LCD للحساب1.
account.1.label = اختبار الهاتف
# تكوين اسم العرض للحساب1.
account.1.display_name = المستخدم 998
# تكوين اسم المستخدم وكلمة المرور لمصادقة التسجيل.
account.1.auth_name = 998
الحساب 1. كلمة المرور = 998
# تكوين اسم مستخدم التسجيل.
account.1.user_name = 998
# تكوين عنوان خادم SIP.
account.1.sip_server_host = 10.1.1.50
# حدد المنفذ لخادم SIP. القيمة الافتراضية هي 5060.
account.1.sip_server_port = 5060

ونتيجة لذلك، وبفضل وظيفة التزويد التلقائي الرائعة المتوفرة في الهواتف التي ذكرتها، لم تكن هناك مشاكل في توصيل الأجهزة الجديدة بالشبكة. كان الأمر كله يتعلق بمعرفة عنوان MAC الخاص بالهاتف وإنشاء ملف تكوين باستخدام قالب.

أتمنى أن تقرأ للنهاية وتستفيد مما قرأت.

شكرا لكم على اهتمامكم.

المصدر: www.habr.com

إضافة تعليق