Máy khách SIP Python

Phân tích sâu hơn về trạng thái bảo trì của ondewo-sip-client dựa trên nhịp phiên bản PyPI đã phát hành, hoạt động của kho lưu trữ và các điểm dữ liệu khác đã xác định rằng việc bảo trì của nó là Bền vững

Chúng tôi thấy rằng ondewo-sip-client thể hiện nhịp phát hành phiên bản tích cực với ít nhất một phiên bản mới được phát hành trong 12 tháng qua

Trong tháng trước, chúng tôi không tìm thấy bất kỳ hoạt động yêu cầu kéo nào hoặc thay đổi trạng thái vấn đề đã được phát hiện đối với kho lưu trữ GitHub

Cần tạo các yêu cầu SIP và phân tích các phản hồi SIP như được định nghĩa trong RFC 3261. Không cần giải pháp “hạng nặng” chạy SIP server/proxy. Cần hỗ trợ Python 2. 7 và 3. 6

Giải pháp hiện có

TênGiấy phépPython 2. 7Trăn 3. 6Tuân thủ RFC 3261Ghi chúXoắnMITYesCóKhôngTuân thủ RFC 2543, không phải RFC 3261. Thêm hỗ trợ RFC 3261 đã không tiến triển trong 6 năm. rtclite (39 đồng nghiệp)LGPLYesNoYesĐược mô tả là triển khai tham chiếu nhẹ. Bao gồm bốn tệp, bao gồm hai RFC khác mà nó nhập và một tệp chung. Tuy nhiên chứa nhiều TODO trong nguồn. dionaeaGPL v2Có?Có thể?Có thể?Dường như là một cái bẫy cho phần mềm độc hại. Trông không phù hợp. Điều khoản 2 SippyBSDYesNoYesXuất hiện khá nặng. pysippGPL v2CóCóCó thể?Dường như là một giao diện cho một công cụ riêng biệt, SIPp. Trông không phù hợp. PJSUAGPL v2???Phần mở rộng C Python cấp thấp. Xuất hiện khá nặng. dpktBSD 3 mệnh đềYesAlmost (Python 3. 5)Không?Có vẻ chưa đầy đủ, hỗ trợ SIP được chạm lần cuối cách đây 2 năm. SIP Simple ClientGPL v3YesNo?YesXuất hiện khá nặng

Lưu ý thú vị

SIPit là một sự kiện kéo dài một tuần, nơi mọi người mang theo các triển khai SIP của họ để đảm bảo chúng hoạt động cùng nhau. Nó chạy cứ sau 18 đến 24 tháng

Cập nhật 2018-08-15

Từ một chủ đề HN đã tìm thấy một báo cáo về việc triển khai SIP trong Python

Cập nhật 2022-04-14

Theo dõi quá hạn lâu. trở lại vào 2018-04-20, đã giải quyết nhu cầu bằng cách viết một ứng dụng khách SIP trọng lượng nhẹ tương thích với Python 2. 7 và Trăn 3. 6, đã triển khai hỗ trợ tối thiểu chỉ cho các lệnh cần thiết. e. g. gửi INVITE, ACK, SUBSCRIBE, BYE; . Vì điều này chỉ bao gồm các chuỗi UTF-8 được gửi/nhận qua một ổ cắm, nên việc thực hiện khá đơn giản

Bốn năm sau, có vẻ như có một số tùy chọn mới, chẳng hạn như pyVOIP. Tuy nhiên, tình hình liên quan đến việc Twisted hỗ trợ RFC 3261 vẫn không thay đổi

Cam kết này không thuộc về bất kỳ nhánh nào trên kho lưu trữ này và có thể thuộc về một nhánh bên ngoài kho lưu trữ

Bạn không thể thực hiện hành động đó vào lúc này

Bạn đã đăng nhập bằng tab hoặc cửa sổ khác. Tải lại để làm mới phiên của bạn. Bạn đã đăng xuất trong một tab hoặc cửa sổ khác. Tải lại để làm mới phiên của bạn

FemtoSIP là một triển khai Python SIP tối thiểu, không đầy đủ và hoàn toàn bị hỏng với mục đích duy nhất là gọi điện thoại SIP và cúp máy ngay lập tức. Điều này khá tiện lợi cho một số tác vụ tự động hóa gia đình, chẳng hạn như báo hiệu rằng ai đó đang bấm chuông cửa

Để gọi tất cả các điện thoại trong nhà, FemtoSIP cần có khả năng kết nối với trạm gốc DECT/PSTN hoạt động như một máy chủ SIP, chẳng hạn như AVM FRITZ. Hộp phổ biến ở Đức. FRITZ. Hộp có một chức năng mà tất cả các điện thoại được kết nối có thể được gọi dưới một số điện thoại nội bộ duy nhất, chẳng hạn như **9

Việc thực hiện tác vụ chuông cửa yêu cầu một số phần cứng bổ sung, chẳng hạn như Raspberry Pi được kết nối với cồng cửa thông qua rơle hoặc bộ cách ly quang; . Tập lệnh cũng đã được sử dụng thành công cùng với OpenHAB

Cách sử dụng

FemtoSIP bao gồm một tệp python duy nhất femtosip.py và chỉ phụ thuộc vào Python 3. 6 hoặc mới hơn. Trăn 3. 6 sẽ có mặt trên hầu hết các bản cài đặt Linux và cũng có sẵn cho các nền tảng khác. Để sử dụng FemtoSIP, hãy sao chép kho lưu trữ Git này và thực hiện chương trình femtosip.py. Ngoài ra, thay vì sử dụng Git, bạn có thể tải xuống trực tiếp femtosip.py

# Clone the program and go into the femtosip directory
git clone https://github.com/astoeckel/femtosip
cd femtosip

# Execute femtosip.py
python3 femtosip.py \
    --gateway 192.168.1.1 \       # IP address or hostname of the SIP server
    --user SIP_USER \             # SIP username
    --password SIP_PASSWORD \     # SIP password
    --call '**9' \                # Which phone number to call
    --delay 15.0 \                # How long to wait til hanging up
    --displayname MyCustomName    # Set the display name, if different from SIP login

Nếu mọi thứ hoạt động, bạn sẽ nhận được kết quả như thế này

2018-01-01 11:41:42,749 request: INVITE sip:**[email protected]
2018-01-01 11:41:42,760 response: SIP/2.0 401 Unauthorized
2018-01-01 11:41:42,760 request: INVITE sip:**[email protected]
2018-01-01 11:41:42,772 response: SIP/2.0 100 Trying
2018-01-01 11:41:42,816 response: SIP/2.0 183 Session Progress
2018-01-01 11:41:57,816 request: CANCEL sip:**[email protected]
2018-01-01 11:41:57,828 response: SIP/2.0 487 Request Cancelled
2018-01-01 11:41:57,829 response: IP/2.0 200 OK

Ngoài ra, bạn có thể gọi femtosip từ một tập lệnh Python khác thông qua

import femtosip
sip = femtosip.SIP(user, password, gateway, port, display_name)
sip.call(call, delay)

Kịch bản ví dụ

2018-01-01 11:41:42,749 request: INVITE sip:**[email protected]
2018-01-01 11:41:42,760 response: SIP/2.0 401 Unauthorized
2018-01-01 11:41:42,760 request: INVITE sip:**[email protected]
2018-01-01 11:41:42,772 response: SIP/2.0 100 Trying
2018-01-01 11:41:42,816 response: SIP/2.0 183 Session Progress
2018-01-01 11:41:57,816 request: CANCEL sip:**[email protected]
2018-01-01 11:41:57,828 response: SIP/2.0 487 Request Cancelled
2018-01-01 11:41:57,829 response: IP/2.0 200 OK
0 thể hiện cách sử dụng cơ bản của femtosip từ một chương trình Python khác và triển khai kịch bản chuông cửa đã nói ở trên. Bạn có thể sử dụng tập lệnh Python này làm dịch vụ
2018-01-01 11:41:42,749 request: INVITE sip:**[email protected]
2018-01-01 11:41:42,760 response: SIP/2.0 401 Unauthorized
2018-01-01 11:41:42,760 request: INVITE sip:**[email protected]
2018-01-01 11:41:42,772 response: SIP/2.0 100 Trying
2018-01-01 11:41:42,816 response: SIP/2.0 183 Session Progress
2018-01-01 11:41:57,816 request: CANCEL sip:**[email protected]
2018-01-01 11:41:57,828 response: SIP/2.0 487 Request Cancelled
2018-01-01 11:41:57,829 response: IP/2.0 200 OK
2 với tệp
2018-01-01 11:41:42,749 request: INVITE sip:**[email protected]
2018-01-01 11:41:42,760 response: SIP/2.0 401 Unauthorized
2018-01-01 11:41:42,760 request: INVITE sip:**[email protected]
2018-01-01 11:41:42,772 response: SIP/2.0 100 Trying
2018-01-01 11:41:42,816 response: SIP/2.0 183 Session Progress
2018-01-01 11:41:57,816 request: CANCEL sip:**[email protected]
2018-01-01 11:41:57,828 response: SIP/2.0 487 Request Cancelled
2018-01-01 11:41:57,829 response: IP/2.0 200 OK
3 được cung cấp. Vui lòng định cấu hình tập lệnh như mong muốn bằng cách chỉnh sửa tệp dịch vụ. Sau đó cài đặt dịch vụ bằng cách chạy các lệnh sau từ bên trong kho lưu trữ Git nhân bản

sudo mkdir -p /opt/rpi_sip_doorbell/
sudo install femtosip.py rpi_sip_doorbell.py /opt/rpi_sip_doorbell
sudo install rpi_sip_doorbell.service /etc/systemd/system
sudo systemctl enable rpi_sip_doorbell.service
sudo systemctl start rpi_sip_doorbell.service

khả năng tương thích

Mã này đã bị hack cùng nhau trong vài giờ và được thử nghiệm với các máy chủ SIP sau

  • AVM FRITZ. Box Fon WLAN 7390
  • AVM FRITZ. Hộp WLAN 7490
  • điện thoại 3. 6. 1 (libexosip2/3. 6)

Nó không được đảm bảo để hoạt động với bất kỳ máy chủ nào khác. Đặc biệt, theo mặc định, FemtoSIP sử dụng kết nối TCP cho SIP, kết nối này không được hỗ trợ bởi tất cả các điểm cuối. Sử dụng

2018-01-01 11:41:42,749 request: INVITE sip:**[email protected]
2018-01-01 11:41:42,760 response: SIP/2.0 401 Unauthorized
2018-01-01 11:41:42,760 request: INVITE sip:**[email protected]
2018-01-01 11:41:42,772 response: SIP/2.0 100 Trying
2018-01-01 11:41:42,816 response: SIP/2.0 183 Session Progress
2018-01-01 11:41:57,816 request: CANCEL sip:**[email protected]
2018-01-01 11:41:57,828 response: SIP/2.0 487 Request Cancelled
2018-01-01 11:41:57,829 response: IP/2.0 200 OK
4 nếu bạn gặp vấn đề về kết nối