FreeSwitch FreeSWITCH 是一個自由開源的軟體型電話交換機。它採用 Mozilla Public License 授權協議,MPL 是一個開源的軟體協議。它的核心庫 libfreeswitch 可以嵌入其它系統或產品中,也可以做一個單獨的應用存在。 FreeSwitch Tips Links FreeSwitch Documentation: https://developer.signalwire.com/freeswitch/FreeSWITCH-Explained/ Github: https://github.com/signalwire/freeswitch   Forum: https://forum.signalwire.community/   FreeSwitch GUI FusionPBX - FusionPBX can be used as a highly available single or domain based multi-tenant PBX, carrier grade switch,... OV500 - OV500 is Open Source VoIP Billing switching and routing Solution. ASTPP - is renowned as the #1 open source Class 4 and Class 5 SoftSwitch based on FreeSWITCH. ASTPP VoIP Billing 6 Debian 11 Freeswitch 1.10 Install Guide FreeSwitch CLI fs_cli fs_cli -x "sofia status" > sofia status > sofia status profile internal reg > show registrations > /quit > version > show calls > show channels > reloadxml > sofia profile external restart > sofia profile external killgw gwt > sofia profile external rescan > reload > reloadxml > reloadacl > reload > show modules > status > eval $${external_sip_ip} > fsctl shutdown restart > domain_exists sip.osslab.tw > module_exists mod_event_socket PostgreSQL su - postgres psql fusionpbx fusionpbx=# \dt fusionpbx=# \d v_gateways fusionpbx=# select * from v_gateways; fusionpbx=# select * from v_default_settings where default_setting_category='email'; FusionPBX A full-featured domain based multi-tenant PBX and voice switch for FreeSwitch. Links Website: https://www.fusionpbx.com/   Forum:  https://www.pbxforums.com/ Documentation: https://docs.fusionpbx.com/en/latest/index.html   Github: https://github.com/fusionpbx/fusionpbx   Installation Install script: https://www.fusionpbx.com/download   Debian 11 wget -O - https://raw.githubusercontent.com/fusionpbx/fusionpbx-install.sh/master/debian/pre-install.sh | sh; cd /usr/src/fusionpbx-install.sh/debian && ./install.sh NAT Setting Web Admin > Advanced > Variables > IP Addresses external_rtp_ip: external_sip_ip: 重啟 freeswitch systemctl restart freeswitch 驗證 Web Admin > Status > SIP Status sofia status profile internal: ext-rtp-ip, ext-sip-ip sofia status profile external: ext-rtp-ip, ext-sip-ip RTP Port /etc/freeswitch/autoload_configs/switch.conf.xml: Gateway to Asterisk On FreePBX Added a custom context 'from-ext-sip-server' with the module Custom Contexts . FreePBX Admin > Connectivity > Custom Contexts > Add Context Context: from-ext-sip-server Description: Whatever Outbound Routes: Add Trunk Trunk Name: fusionpbx PEER Details: host=sip.osslab.tw type=peer context=from-ext-sip-server nat=yes insecure=port,invite On FusionPBX Web Admin > Accounts > Gateways > Add Gateway: myasterisk Proxy: Register: False Profile: external Enable: Checked Web Admin > Dialplan > Outbound Routes > Add Gateway: myasterisk Dialplan Expression: 9 Digits Prefix: Enable: True 另一個方法:以 Bridge 取代 Gateway Applications > Bridge Name: <自定義> Destination: sofia/Internal/$1@:5060 Advanced > Access Controls > Add Name: FreePBX Default: deny Nodes Type: allow CIDR: /32 Domain: Description: <自訂>  Outbound Route 記得要選 Bridge。 Voicemail to Email Web Admin > Accounts > Extensions > Select extension and Edit Voicemail Mail to: Web Admin > Advanced > Default Settings > Email address_type: add_address method: smtp smtp_auth: True smtp_from: smtp_from_name: smtp_host: smtp-relay.sendinblue.com smtp_hostname: False smtp_username: smtp_password: smtp_port: 587 smtp_secure: tls smtp_validate_certificate: True Send Test Email Web Admin > Status > Email Logs > TEST Bug Fixed: [ERR] switch_cpp.cpp:1465 [database] can not bind parameter: undefined parameter: email_from Edit /usr/share/freeswitch/scripts/resources/functions/send_mail.lua if (email_from == nil or email_from == "") then email_from = settings:get('email', 'smtp_from', 'text'); from_name = settings:get('email', 'smtp_from_name', 'text'); end -- added by Alang -- fixed: [ERR] switch_cpp.cpp:1465 [database] can not bind parameter: undefined parameter: email_from email_from = 'noreply@your.domain'; if (email_from == nil or email_from == "") then email_from = address; elseif (from_name ~= nil and from_name ~= "") then email_from = from_name .. "<" .. email_from .. ">"; end Voicemail Transcription IBM Watson API IBM Cloud > Watson > STT API Key: SQCKJOwC_4VoRozrhw-zm2vYFcxgztFlb2LskGr API URL: https://api.au-syd.speech-to-text.watson.cloud.ibm.com/instances/{GUID} FusionPBX > Advanced > Default Settings > 新增以下參數 Category Subcategory Type Value Enabled voicemail transcribe_provider text watson True voicemail watson_key text {your watson key} True voicemail watson_url text {watson url} True voicemail transcribe_language text en-US True voicemail transcribe_enabled boolean true True voicemail json_enabled boolean true True watson_url = https://api.au-syd.speech-to-text.watson.cloud.ibm.com/instances/{GUID}/v1/recognize?model=en-US_NarrowbandModel&smart_formatting=true 其他語言模型: https://cloud.ibm.com/docs/speech-to-text?topic=speech-to-text-models   按下 "Reload" 套用設定。 FusionPBX > Status > SIP Status 按下 "Flush Cache","Reload XML" 與 "Rescan"。 測試 STT API # Audio file: audio-file.flac curl -X POST -u "apikey:{API_KET}" \ --header "Content-Type: audio/flac" \ --data-binary @audio-file.flac \ "https://api.au-syd.speech-to-text.watson.cloud.ibm.com/instances/{GUID}/v1/recognize" Auto Provisioning Provision (Linksys PAP2T) Web Admin > Advanced > Default Settings > Provision enabled: True , Enabled: True admin_password: <自訂密碼,硬體電話的管理存取>, Enabled: True http_auth_username: <空白>, Enable: False NOTE: PAP2T 不支援 http 認證的 Auto Provisioning。 ntp_server_primary: tw.pool.ntp.org , Enable: True spa_dial_plan: (*xx|*0xx|[3469]11|0|00|[2-9]xxxxxx|1xxx[2-9]xxxxxxS0|*xxxx|xxxxxxxxxxxx.) , Enabled: True spa_time_zone: GMT+08:00 , Enabled: True Device Web Admin > Accounts > Devices > ADD MAC Address: Domain: <選擇適合的網域> Enabled: Checked 其餘欄位保持空白或預設 Extension Web Admin > Accounts > Extensions > Add  Extension: <自訂分機號> Device Provisioning: Line: 1 MAC Address: <選擇 PAP2T 的 MAC> Template: cisco/pap2t Domain: <選擇合適的網域> Enabled: Checked 驗證 Provision Configuration 瀏覽器輸入 http:///app/provision/?mac= 如果有輸出 XML 格式的參數設定檔內容,表示以上的設定正確。 Linksys PAP2T PAP2T Web Admin > Provisioning Provision Enable: yes Profile Rule: http:///app/provision/?mac=$MA TIP: 如果發生無法註冊成功,且同一個 NAT 網路環境還有其他 SIP 終端裝置。試試修改 PAP2T 的 Local SIP port 為其他 port。 修改 PAP2T 的 Local Port (透過 FusionPBX) Web Admin > Accounts > Devices > Select: > Lines > Line 1 Port: 1001 (預設是 5060)  重啟 PAP2T 以便重新同步新設定。 Cisco IP Phone 8800/7800 Series Cisco 8841 User Manual Cisco IP Phone 8800 Series :Deployment and Provisioning Cisco IP Phone 8800 Series : Provisioning Examples Cisco IP Phone 7800 Series and Cisco IP Conference Phone 7832 Multiplatform Phones Provisioning Guide Let's Encrypt Doc - Lent's Encrypt WebRTC Doc - WebRTC Github SaraPhone