Sonata - เซิร์ฟเวอร์การจัดเตรียม SIP

ฉันไม่รู้ว่าจะเปรียบเทียบการจัดสรรกับอะไร อาจจะกับแมว? ดูเหมือนว่าจะเป็นไปได้หากไม่มีมัน แต่จะดีกว่านิดหน่อย โดยเฉพาะอย่างยิ่งถ้ามันได้ผล))

การกำหนดปัญหา:

  1. ฉันต้องการตั้งค่าโทรศัพท์ SIP อย่างรวดเร็ว ง่ายดาย และปลอดภัย เมื่อติดตั้งโทรศัพท์ และยิ่งกว่านั้นเมื่อกำหนดค่าใหม่
  2. ผู้จำหน่ายหลายรายมีรูปแบบการกำหนดค่าของตนเอง มียูทิลิตี้ของตนเองสำหรับการสร้างการกำหนดค่า และวิธีการปกป้องการกำหนดค่าของตนเอง และฉันไม่อยากยุ่งกับทุกคนจริงๆ
  3. โซลูชันการเตรียมใช้งานจำนวนมาก ก) มุ่งเน้นไปที่ผู้จำหน่ายรายเดียวหรือระบบโทรศัพท์หนึ่งระบบ ข) ค่อนข้างยุ่งยากในการใช้งาน มีสคริปต์ พารามิเตอร์ จำนวนมาก...

ในประเด็นที่ 3 ผมจะแสดงความคิดเห็นว่ามีระบบการจัดเตรียมที่ดีเยี่ยม สำหรับ FreePBX, สำหรับ FusionPBX, สำหรับคาซูโดยที่เทมเพลตสำหรับโทรศัพท์จากผู้จำหน่ายหลายรายเปิดเผยต่อสาธารณะ มีโซลูชันเชิงพาณิชย์ที่คุณสามารถกำหนดค่าการทำงานของโทรศัพท์จากผู้ผลิตหลายรายในโมดูลการจัดเตรียม เช่น Yeastar PBX

Habré ยังมีสูตรอาหารมากมายเกี่ยวกับวิธีตั้งค่าอุปกรณ์จากผู้จำหน่ายหลายราย: เวลา, สอง. แต่อย่างที่พวกเขาพูดกันว่าทุกระบบมีข้อบกพร่องร้ายแรง ดังนั้นเราจะสร้างจักรยานของเราเอง

รูปแบบของคุณเอง

ตามที่กล่าวไว้ใน xkcd หากคุณไม่ต้องการจัดการกับ 14 รูปแบบ - มาวันที่ 15. ดังนั้นเราจึงใช้การตั้งค่าทั่วไปสำหรับโทรศัพท์ทุกรุ่นและสร้างรูปแบบการกำหนดค่า json ของเราเอง

บางสิ่งเช่นนี้:

{
   "key": "sdgjdeu9443908",
   "token": "590sfdsf8u984",
   "model": "gxp1620",
   "vendor": "grandstream",
   "mac": "001565113af8",
   "timezone_offset": "GMT+03",
   "ntp_server": "pool.ntp.org",
   "status": true,
   "accounts": [
      {
         "name": "Мобилон",
         "line": 1,
         "sip_register": "sip.mobilonsip.ru",
         "sip_name": "sip102",
         "sip_user": "sip102",
         "sip_password": "4321",
         "sip_auth": "sip102"
      }
   ]
}

ดังนั้นในโทรศัพท์ทุกรุ่น คุณต้องกำหนดค่าเวลาท้องถิ่นและสาย SIP ทุกอย่างเรียบง่ายที่นี่ คุณสามารถดูตัวอย่างเพิ่มเติมได้ ที่นี่.

การจัดเตรียมเซิร์ฟเวอร์ของคุณเอง

ในคู่มือของผู้ผลิตมักจะมีจุดที่ระบุว่า: ใช้ csv, จดรหัสผ่านสำหรับเข้าสู่ระบบ-ที่อยู่ mac, สร้างไฟล์โดยใช้สคริปต์ที่เป็นกรรมสิทธิ์ของเรา, วางไว้ใต้เว็บเซิร์ฟเวอร์ Apache แล้วทุกอย่างจะเรียบร้อยดี

ย่อหน้าถัดไปของคู่มือมักจะบอกคุณว่าคุณสามารถเข้ารหัสไฟล์ปรับแต่งที่สร้างขึ้นได้

แต่สิ่งเหล่านี้ล้วนเป็นคลาสสิก วิธีการที่ทันสมัยด้วยสมูทตี้และ Twitter บอกว่าคุณต้องสร้างเว็บเซิร์ฟเวอร์สำเร็จรูปที่จะไม่ทรงพลังเท่ากับ Apache แต่จะทำสิ่งเล็กๆ น้อยๆ เท่านั้น สร้างและส่งการกำหนดค่าโดยใช้ลิงก์

มาหยุดที่นี่และจำไว้ว่าโทรศัพท์ SIP เกือบทั้งหมดสามารถรับการกำหนดค่าผ่าน http/https ได้ ดังนั้นเราจึงไม่พิจารณาการใช้งานอื่นๆ (ftp, tftp, ftps) จากนั้นโทรศัพท์แต่ละเครื่องจะรู้ที่อยู่ MAC ของตัวเอง ดังนั้นเราจะสร้างลิงก์สองลิงก์: ลิงก์ส่วนบุคคล - ตามรหัสอุปกรณ์ ลิงก์ทั่วไปที่สองซึ่งทำงานโดยใช้โทเค็นทั่วไปและที่อยู่ MAC ร่วมกัน

นอกจากนี้ฉันจะไม่จมอยู่กับการกำหนดค่าเป็นศูนย์เช่น การตั้งค่าโทรศัพท์ตั้งแต่เริ่มต้นเช่น คุณเสียบเข้ากับเครือข่ายและมันก็เริ่มทำงาน ไม่ ในสถานการณ์ของฉัน คุณเสียบอุปกรณ์เข้ากับเครือข่าย ทำการตั้งค่าเบื้องต้น (ตั้งค่าเพื่อรับการกำหนดค่าจากเซิร์ฟเวอร์การจัดเตรียม) จากนั้นดื่ม pina colada และกำหนดค่าโทรศัพท์ใหม่ตามที่จำเป็นผ่านการจัดเตรียม การแจกจ่ายตัวเลือก 66 เป็นความรับผิดชอบของเซิร์ฟเวอร์ DHCP

อย่างไรก็ตาม ฉันเบื่อหน่ายกับการพูดว่า "การจัดสรร" จริงๆ เลยย่อคำนี้ให้สั้นลงเป็น "การจัดเตรียม" โปรดอย่าเตะฉัน

และอีกอย่างหนึ่ง: เซิร์ฟเวอร์การจัดเตรียมของเราไม่มี UI เช่น หน้าจอผู้ใช้. บางทีตอนนี้แต่ไม่แน่ใจเพราะ... ฉันไม่ต้องการมัน แต่มี API สำหรับบันทึก/ลบการตั้งค่า รับรายชื่อผู้จำหน่ายที่รองรับ โมเดล ทุกอย่างมีการอธิบายตามหลักการของข้อกำหนดผยอง

ทำไมต้อง API ไม่ใช่ UI เพราะ ฉันมีระบบโทรศัพท์ของตัวเองอยู่แล้ว จากนั้นฉันก็มีแหล่งที่มาของข้อมูลประจำตัว ซึ่งฉันแค่ต้องนำข้อมูลนี้ คอมไพล์ json ที่จำเป็น และเผยแพร่บนเซิร์ฟเวอร์การจัดเตรียม และเซิร์ฟเวอร์การจัดเตรียมตามกฎที่ระบุในไฟล์ json จะให้การกำหนดค่าแก่อุปกรณ์ที่ต้องการ หรือจะไม่ให้หากอุปกรณ์ไม่ถูกต้องหรือไม่ตรงตามเกณฑ์ที่ระบุไว้ใน json นี้ด้วย

Sonata - เซิร์ฟเวอร์การจัดเตรียม SIP

นี่คือลักษณะที่ไมโครเซอร์วิสการจัดเตรียมเกิดขึ้น เรียกว่า บทเพลงเข้าเปียโนซอร์สโค้ดมีอยู่ใน GitHub แล้วก็มีด้วย รูปภาพนักเทียบท่าพร้อม, ตัวอย่างการใช้งานนักเทียบท่า ที่นี่.

คุณสมบัติที่สำคัญ:

  • ไม่ว่าในกรณีใด จำกัดการเข้าถึงการกำหนดค่าตามเวลา โดยค่าเริ่มต้นคือ 10 นาที หากคุณต้องการให้การกำหนดค่าใช้งานได้อีกครั้ง ให้เผยแพร่การกำหนดค่าอีกครั้ง

  • รูปแบบเดียวสำหรับผู้ขายทั้งหมด การปรับเปลี่ยนทั้งหมดจะถูกลบออกในโซนาต้า คุณส่ง json มาตรฐาน กำหนดค่าอุปกรณ์ใดๆ ที่พร้อมใช้งาน

  • การกำหนดค่าทั้งหมดที่ออกให้กับอุปกรณ์จะถูกบันทึกไว้ สามารถดูพื้นที่ปัญหาทั้งหมดในบันทึกและสามารถดูข้อผิดพลาดได้

  • คุณสามารถใช้ลิงก์ทั่วไปหนึ่งลิงก์กับโทเค็นได้ โทรศัพท์แต่ละเครื่องจะได้รับการกำหนดค่าของตัวเองโดยการระบุที่อยู่ Mac หรือลิงค์ส่วนตัวผ่านกุญแจ

  • API สำหรับการจัดการ (การจัดการ) และการจัดเตรียมการกำหนดค่าไปยังโทรศัพท์ (การจัดเตรียม) จะถูกแบ่งตามพอร์ต

  • การทดสอบ เป็นสิ่งสำคัญมากสำหรับฉันในการแก้ไขรูปแบบของการกำหนดค่าที่ออกและครอบคลุมสถานการณ์ปกติทั้งหมดของการออกการกำหนดค่าด้วยการทดสอบ เพื่อให้ทั้งหมดนี้ทำงานอย่างชัดเจน

จุดด้อย:

จนถึงขณะนี้ ยังไม่มีการใช้การเข้ารหัสใดๆ ภายใน Sonata เหล่านั้น. แน่นอนคุณสามารถเริ่มใช้ https ได้โดยใส่ nginx ไว้หน้าโซนาต้าเป็นต้น แต่ยังไม่ได้ใช้วิธีการที่เป็นกรรมสิทธิ์ ทำไม โปรเจ็กต์นี้ยังใหม่อยู่ โดยได้เปิดตัวอุปกรณ์นับร้อยเครื่องแรกแล้ว และแน่นอนว่าฉันรวบรวมแนวคิดและคำติชม นอกจากนี้เพื่อให้ทุกอย่างปลอดภัยเพื่อไม่ให้กำหนดค่าบนเครือข่ายได้อาจคุ้มค่าที่จะกังวลกับคีย์เข้ารหัส tls และเม่นด้วย แต่นี่จะเป็นความต่อเนื่อง

ขาด UI บางทีนี่อาจเป็นข้อเสียที่สำคัญสำหรับผู้ใช้ แต่สำหรับผู้ดูแลระบบยูทิลิตี้คอนโซลมีความสำคัญมากกว่าแอปพลิเคชันที่มีคุณสมบัติครบถ้วน มีแผนจะสร้างคอนโซลยูทิลิตี้ แต่ฉันไม่แน่ใจว่าจำเป็นหรือไม่

ผลหรือไม่

เว็บเซิร์ฟเวอร์ขนาดเล็กและเรียบง่ายสำหรับการจัดเตรียมโทรศัพท์หลายรุ่นด้วย API สำหรับการจัดการ

อีกครั้ง สิ่งนี้ควรจะทำงานอย่างไร?

  1. การติดตั้งโซนาต้า
  2. เราสร้างการกำหนดค่า json และเผยแพร่ในโซนาต้า
  3. จากนั้นเราจะได้รับลิงก์การจัดเตรียมจากโซนาต้า
  4. จากนั้นเราจะระบุลิงก์นี้ทางโทรศัพท์
  5. อุปกรณ์กำลังโหลดการกำหนดค่า

การดำเนินการครั้งต่อไปมีเพียงสองขั้นตอน:

  1. เราสร้างการกำหนดค่า json และเผยแพร่ในโซนาต้า
  2. อุปกรณ์กำลังโหลดการกำหนดค่า

โทรศัพท์รุ่นใดจะได้รับการโปรโมต?

ผู้ขาย Grandstream, Fanvil, Yealink การกำหนดค่าภายในผู้จำหน่ายจะเหมือนกันไม่มากก็น้อย แต่อาจแตกต่างกันไปขึ้นอยู่กับเฟิร์มแวร์ - อาจจำเป็นต้องทดสอบเพิ่มเติม

คุณสามารถตั้งกฎอะไรได้บ้าง?

ตามเวลา. คุณสามารถระบุเวลาที่การกำหนดค่าจะพร้อมใช้งานได้
ตามที่อยู่แมค เมื่อส่งการกำหนดค่าผ่านลิงก์ส่วนตัวของอุปกรณ์ ที่อยู่ Mac จะถูกตรวจสอบด้วย
โดยไอพี ตามที่อยู่ IP ที่มีการร้องขอ

จะโต้ตอบกับโซนาต้าได้อย่างไร?

ผ่าน API ทำการร้องขอ http API จะพร้อมใช้งานในการติดตั้งของคุณ เพราะ API รองรับข้อกำหนดผยองที่คุณสามารถใช้ได้ ยูทิลิตี้ออนไลน์ สำหรับคำขอทดสอบไปยัง API

ตกลงเยี่ยมมาก ของเจ๋งๆ ลองทำดูมั้ย?

วิธีที่ง่ายที่สุดคือการปรับใช้อิมเมจนักเทียบท่าตามพื้นที่เก็บข้อมูล โซนาต้า-ตัวอย่าง. ที่เก็บมีคำแนะนำในการติดตั้ง

จะเกิดอะไรขึ้นถ้าฉันรู้จัก node.js?

หากคุณมีประสบการณ์ในการใช้ JavaScript คุณจะเข้าใจได้อย่างรวดเร็วว่าทุกอย่างทำงานที่นี่อย่างไร

จะมีการพัฒนา Sonata หรือไม่?

ฉันบรรลุเป้าหมายบางส่วนแล้ว การพัฒนาเพิ่มเติมเป็นเรื่องของงานของฉันในหัวข้อการตั้งค่าโทรศัพท์อัตโนมัติ นอกจากนี้ยังมีโอกาสที่จะขยายการกำหนดค่าเพื่อกำหนดค่าปุ่มโทรศัพท์ เพิ่มการจัดเตรียมสมุดที่อยู่ หรืออาจเป็นอย่างอื่น เขียนในความคิดเห็น

สรุปและรับทราบ

ฉันยินดีที่จะได้รับข้อเสนอแนะ/ข้อโต้แย้ง/ความคิดเห็นและคำถามที่สร้างสรรค์ เพราะ... อาจเป็นไปได้ว่าเขาอธิบายบางสิ่งที่ไม่อาจเข้าใจได้

ฉันยังแสดงความขอบคุณต่อเพื่อนร่วมงานทุกคนที่ช่วยเหลือ แนะนำ ทดสอบ และจัดหา/บริจาคโทรศัพท์เพื่อทำการทดสอบ ในความเป็นจริง ผู้คนจำนวนมากที่ฉันสื่อสารด้วยในที่ทำงานมีส่วนร่วมในโครงการในระดับที่แตกต่างกัน แอสเตอร์คอนฟ'e ในการแชทและอีเมล ขอบคุณสำหรับแนวคิดและความคิด

ที่มา: will.com

เพิ่มความคิดเห็น