Posting this here to see if it helps others, or if there is a better way to manage this.
Our employees text in images to our dispatch, so our SMS/MMS database files tend to grow fast and slow down the Sangoma Phone client to a crawl. So I needed a way to purge the data.
So I came up with these SQL commandsto fix it, I will likely put it on a cron job at some point.
mysql asterisk --execute="CREATE TABLE new_sms_messages LIKE sms_messages"
mysql asterisk --execute="INSERT INTO new_sms_messages SELECT * from sms_messages WHERE tx_rx_datetime >= CURDATE() - INTERVAL 1 MONTH"
mysql asterisk --execute="RENAME TABLE sms_messages TO sms_messages_old"
mysql asterisk --execute="RENAME TABLE new_sms_messages TO sms_messages"
mysql asterisk --execute="CREATE TABLE new_sms_media LIKE sms_media"
mysql asterisk --execute="INSERT INTO new_sms_media SELECT a.* from sms_media a inner join sms_messages b on a.mid = b.id WHERE tx_rx_datetime >= CURDATE() - INTERVAL 1 MONTH"
mysql asterisk --execute="RENAME TABLE sms_media TO sms_media_old"
mysql asterisk --execute="RENAME TABLE new_sms_media TO sms_media"
Any thoughts issues anyone sees with doing it this way?
Old good ’ pip3 install yandex-speechkit’ ran from root won’t work anymore, with error:
error: externally-managed-environment
× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
python3-xyz, where xyz is the package you are trying to
install.
If you wish to install a non-Debian-packaged Python package,
create a virtual environment using python3 -m venv path/to/venv.
Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
sure you have python3-full installed.
If you wish to install a non-Debian packaged Python application,
it may be easiest to use pipx install xyz, which will manage a
virtual environment for you. Make sure you have pipx installed.
See /usr/share/doc/python3.11/README.venv for more information.
note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.
The WarmSpare job completes but IVRs don’t load and backup.log shows the following error:
I’ve reinstalled IVR on the WarmSpare, and confirmed both PBXs are fully up to date.
Hello
I have some trouble with my FrrePBX and i don’t know why.
Everything was working, but one moment i saw error
this api url is “/admin/api/api/authorize” Can you help me,please?
{“error”:{“type”:“Error”,“message”:“Class "Slim\Http\Stream" not found”,“code”:0,“file”:“/var/www/html/admin/modules/api/Oauth/Oauth.php”,“line”:221}}
I don’t expect anything to get fixed here. I’m posting for others who may see the same thing happen.
This is, again, a v15 to v16 upgraded system.
We purged the voicemails from a user’s box via the voicemail admin module. After doing so, calls to the extension roll to voicemail without ringing on the calling side or without playing the recorded name or greeting. And yes, the extension shows as having both still in the voicemail admin module.
The wheels are entirely off the cart, here, Sangoma.
I’ve been working on getting 8865/8861 phones (both 3PCC and K9) to play nice with FreePBX. I previously used usecallmanager, but I couldn’t get auto-answer to work for paging or intercom.
I managed to get SCCP Manager installed, but I noticed there’s no template for the 8865, and it doesn’t seem to support the H.264 codec.
Here are the key features I’m trying to achieve but running into trouble with:
Auto-answer for intercom/paging
DND/BLF functionality
For the 3PCC phones, they send a DND XML event, but Asterisk returns a “bad event” error. Everything else works fine.
For the K9 phones, I haven’t tested DND yet, but it’s supposed to work with the patch. The main issue I’m running into is auto-answer. From what I understand, you need to have an intercom extension and a main extension for it to work. That would be fine if I could subscribe to the main extension for BLF and speed-dial the intercom extension for auto-answer.
I actually got a good deal on the 3PCC phones—I ordered a bunch of K9 models and ended up getting 3PCC ones instead. If the DND XML event worked with Asterisk, sticking with the 3PCC phones would be a lot easier to manage.
This is the error I get when I run freepbx ./install -n I wonder if there is a freepbx.conf file, how can I fix this error
Reading /etc/asterisk/asterisk.conf…Done
Checking if Asterisk is running and we can talk to it as the ‘asterisk’ user…Yes. Determined Asterisk version to be: 21.6.1
Checking if NodeJS is installed and we can get a version from it…Yes. Determined NodeJS version to be: 20.18.1
Preliminary checks done. Starting FreePBX Installation
Checking if this is a new install…Yes (No /etc/freepbx.conf file detected)
Database Root installation checking credentials and permissions…Error!
I am following the write-up from “Two “Sort Of” Tech Guys”:
Inbound calls from my 2 GV lines work great as I can change the inbound route to either my SIP phone, my Windows softphone, or the two FXS ports. Analog phones on the FXS ports can send and receive FreePBX calls perfectly fine.
Most of the setup is working fine, except for outgoing calls. No matter what I do, I get a busy signal. The line in the write-up that is causing a problem is:
PJSIP/gvgateway/sip:$OUTNUM$@ip_address_of_obihai:X_UserAgentPort
…mine is:
PJSIP/GVGateway2/sip:$OUTNUM$@192.168.50.201:5063
ADDED INFO: When the 2 FXS ports are switched to use SP1 & SP2 (the default Google voice services), both phones can dial out through GV without a problem.
It seems pretty certain that FreePBX is communicating with the OBI202, because if I change any of the parameters above (like the IP address or port), the error changes from a busy signal to an infinite ring.
The OBI202 Syslog was configured, but nothing sent to my syslog server for some reason (firmware maybe?). All of the hardware is on an internal network with no firewall restrictions.
Why am I doing this? I’m retired now, employed by the Bell System many years ago, and I would like to learn this technology that is new to me. Subscribing to a real SIP provider would certainly resolve my issues, but I’m doing this for the challenge…as a hobby.
I’m not asking anyone to solve my problem for me, but provide tips or direction on how to troubleshoot this myself.
Thank you.
Error snippet:
<--- Received SIP request (934 bytes) from UDP:192.168.50.196:5060 --->
INVITE sip:8005551212@192.168.50.202:5060 SIP/2.0
Via: SIP/2.0/UDP 192.168.50.196:5060;branch=z9hG4bK591157c8f9cdb29e16dbd
From: "108" <sip:108@192.168.50.202:5060>;tag=1351910717
To: <sip:8005551212@192.168.50.202:5060>
Call-ID: 0_1351946541@192.168.50.196
CSeq: 1 INVITE
Contact: <sip:108@192.168.50.196:5060>
Content-Type: application/sdp
Allow: INVITE, INFO, PRACK, ACK, BYE, CANCEL, OPTIONS, NOTIFY, REGISTER, SUBSCRIBE, REFER, PUBLISH, UPDATE, MESSAGE
Max-Forwards: 70
User-Agent: Yealink SIP-T34W 124.86.0.75
Allow-Events: talk,hold,conference,refer,check-sync
Supported: replaces
Content-Length: 310
v=0
o=- 20329 20329 IN IP4 192.168.50.196
s=SDP data
c=IN IP4 192.168.50.196
t=0 0
m=audio 12390 RTP/AVP 9 0 8 18 101
a=rtpmap:9 G722/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:18 G729/8000
a=fmtp:18 annexb=no
a=ptime:20
a=sendrecv
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
<--- Transmitting SIP response (513 bytes) to UDP:192.168.50.196:5060 --->
SIP/2.0 401 Unauthorized
Via: SIP/2.0/UDP 192.168.50.196:5060;rport=5060;received=192.168.50.196;branch=z9hG4bK591157c8f9cdb29e16dbd
Call-ID: 0_1351946541@192.168.50.196
From: "108" <sip:108@192.168.50.202>;tag=1351910717
To: <sip:8005551212@192.168.50.202>;tag=z9hG4bK591157c8f9cdb29e16dbd
CSeq: 1 INVITE
WWW-Authenticate: Digest realm="asterisk",nonce="1737468400/6dbb9d6a061f5058cf52853380e6d3a9",opaque="61a428162ef2a1f0",algorithm=MD5,qop="auth"
Server: FPBX-17.0.19.23(22.1.0)
Content-Length: 0
<--- Received SIP request (317 bytes) from UDP:192.168.50.196:5060 --->
ACK sip:8005551212@192.168.50.202:5060 SIP/2.0
Via: SIP/2.0/UDP 192.168.50.196:5060;branch=z9hG4bK591157c8f9cdb29e16dbd
From: "108" <sip:108@192.168.50.202>;tag=1351910717
To: <sip:8005551212@192.168.50.202>;tag=z9hG4bK591157c8f9cdb29e16dbd
Call-ID: 0_1351946541@192.168.50.196
CSeq: 1 ACK
Content-Length: 0
<--- Received SIP request (1205 bytes) from UDP:192.168.50.196:5060 --->
INVITE sip:8005551212@192.168.50.202:5060 SIP/2.0
Via: SIP/2.0/UDP 192.168.50.196:5060;branch=z9hG4bK1352023758
From: "108" <sip:108@192.168.50.202:5060>;tag=1351910717
To: <sip:8005551212@192.168.50.202:5060>
Call-ID: 0_1351946541@192.168.50.196
CSeq: 2 INVITE
Contact: <sip:108@192.168.50.196:5060>
Authorization: Digest username="108", realm="asterisk", nonce="1737468400/6dbb9d6a061f5058cf52853380e6d3a9", uri="sip:8005551212@192.168.50.202:5060", response="ca8acfdf6c5b61bb5969a68eadca57a4", algorithm=MD5, cnonce="1352091545", opaque="61a428162ef2a1f0", qop=auth, nc=00000001
Content-Type: application/sdp
Allow: INVITE, INFO, PRACK, ACK, BYE, CANCEL, OPTIONS, NOTIFY, REGISTER, SUBSCRIBE, REFER, PUBLISH, UPDATE, MESSAGE
Max-Forwards: 70
User-Agent: Yealink SIP-T34W 124.86.0.75
Allow-Events: talk,hold,conference,refer,check-sync
Supported: replaces
Content-Length: 310
v=0
o=- 20329 20329 IN IP4 192.168.50.196
s=SDP data
c=IN IP4 192.168.50.196
t=0 0
m=audio 12390 RTP/AVP 9 0 8 18 101
a=rtpmap:9 G722/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:18 G729/8000
a=fmtp:18 annexb=no
a=ptime:20
a=sendrecv
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
<--- Transmitting SIP response (317 bytes) to UDP:192.168.50.196:5060 --->
SIP/2.0 100 Trying
Via: SIP/2.0/UDP 192.168.50.196:5060;rport=5060;received=192.168.50.196;branch=z9hG4bK1352023758
Call-ID: 0_1351946541@192.168.50.196
From: "108" <sip:108@192.168.50.202>;tag=1351910717
To: <sip:8005551212@192.168.50.202>
CSeq: 2 INVITE
Server: FPBX-17.0.19.23(22.1.0)
Content-Length: 0
== Using SIP RTP Audio TOS bits 184
== Using SIP RTP Audio CoS mark 5
-- Executing [8005551212@from-internal:1] Gosub("PJSIP/108-000000b0", "macro-user-callerid,s,1(LIMIT,EXTERNAL)") in new stack
-- Executing [s@macro-user-callerid:1] Set("PJSIP/108-000000b0", "TOUCH_MONITOR=1737468400.176") in new stack
-- Executing [s@macro-user-callerid:2] Set("PJSIP/108-000000b0", "CHANCONTEXT=") in new stack
-- Executing [s@macro-user-callerid:3] Set("PJSIP/108-000000b0", "CHANCONTEXT=") in new stack
-- Executing [s@macro-user-callerid:4] Set("PJSIP/108-000000b0", "CHANEXTENCONTEXT=108-000000b0") in new stack
-- Executing [s@macro-user-callerid:5] Set("PJSIP/108-000000b0", "CHANEXTEN=108-000000b0") in new stack
-- Executing [s@macro-user-callerid:6] Set("PJSIP/108-000000b0", "CALLERID(number)=108") in new stack
-- Executing [s@macro-user-callerid:7] Set("PJSIP/108-000000b0", "AMPUSER=108") in new stack
-- Executing [s@macro-user-callerid:8] Set("PJSIP/108-000000b0", "HOTDESCKCHAN=108-000000b0") in new stack
-- Executing [s@macro-user-callerid:9] Set("PJSIP/108-000000b0", "HOTDESKEXTEN=108") in new stack
-- Executing [s@macro-user-callerid:10] Set("PJSIP/108-000000b0", "HOTDESKCALL=0") in new stack
-- Executing [s@macro-user-callerid:11] ExecIf("PJSIP/108-000000b0", "0?Set(HOTDESKCALL=1)") in new stack
-- Executing [s@macro-user-callerid:12] ExecIf("PJSIP/108-000000b0", "0?Set(CALLERID(name)=)") in new stack
-- Executing [s@macro-user-callerid:13] GotoIf("PJSIP/108-000000b0", "0?report") in new stack
-- Executing [s@macro-user-callerid:14] ExecIf("PJSIP/108-000000b0", "1?Set(REALCALLERIDNUM=108)") in new stack
-- Executing [s@macro-user-callerid:15] Set("PJSIP/108-000000b0", "AMPUSER=108") in new stack
-- Executing [s@macro-user-callerid:16] GotoIf("PJSIP/108-000000b0", "0?limit") in new stack
-- Executing [s@macro-user-callerid:17] Set("PJSIP/108-000000b0", "AMPUSERCIDNAME=DeskPhone") in new stack
-- Executing [s@macro-user-callerid:18] ExecIf("PJSIP/108-000000b0", "0?Set(__CIDMASQUERADING=TRUE)") in new stack
-- Executing [s@macro-user-callerid:19] GotoIf("PJSIP/108-000000b0", "0?report") in new stack
-- Executing [s@macro-user-callerid:20] Set("PJSIP/108-000000b0", "AMPUSERCID=108") in new stack
-- Executing [s@macro-user-callerid:21] Set("PJSIP/108-000000b0", "__DIAL_OPTIONS=") in new stack
-- Executing [s@macro-user-callerid:22] Set("PJSIP/108-000000b0", "CALLERID(all)="DeskPhone" <108>") in new stack
-- Executing [s@macro-user-callerid:23] ExecIf("PJSIP/108-000000b0", "0?Set(CUSDIAL=)") in new stack
-- Executing [s@macro-user-callerid:24] ExecIf("PJSIP/108-000000b0", "0?Set(CALLERID(all)="DeskPhone" <108>)") in new stack
-- Executing [s@macro-user-callerid:25] GotoIf("PJSIP/108-000000b0", "0?limit") in new stack
-- Executing [s@macro-user-callerid:26] ExecIf("PJSIP/108-000000b0", "1?Set(GROUP(concurrency_limit)=108)") in new stack
-- Executing [s@macro-user-callerid:27] NoOp("PJSIP/108-000000b0", "Macro depricated!! To keep the same line numbers") in new stack
-- Executing [s@macro-user-callerid:28] NoOp("PJSIP/108-000000b0", "Macro depricated !! To keep the same line numbers") in new stack
-- Executing [s@macro-user-callerid:29] GotoIf("PJSIP/108-000000b0", "1?continue") in new stack
-- Goto (macro-user-callerid,s,47)
-- Executing [s@macro-user-callerid:47] Set("PJSIP/108-000000b0", "CALLERID(number)=108") in new stack
-- Executing [s@macro-user-callerid:48] Set("PJSIP/108-000000b0", "CALLERID(name)=DeskPhone") in new stack
-- Executing [s@macro-user-callerid:49] GotoIf("PJSIP/108-000000b0", "0?cnum") in new stack
-- Executing [s@macro-user-callerid:50] Set("PJSIP/108-000000b0", "CDR(cnam)=DeskPhone") in new stack
-- Executing [s@macro-user-callerid:51] Set("PJSIP/108-000000b0", "CDR(cnum)=108") in new stack
-- Executing [s@macro-user-callerid:52] Return("PJSIP/108-000000b0", "") in new stack
-- Executing [8005551212@from-internal:2] Gosub("PJSIP/108-000000b0", "sub-record-check,s,1(out,8005551212,dontcare)") in new stack
-- Executing [s@sub-record-check:1] GotoIf("PJSIP/108-000000b0", "0?initialized") in new stack
-- Executing [s@sub-record-check:2] Set("PJSIP/108-000000b0", "__REC_STATUS=INITIALIZED") in new stack
-- Executing [s@sub-record-check:3] Set("PJSIP/108-000000b0", "NOW=1737468400") in new stack
-- Executing [s@sub-record-check:4] Set("PJSIP/108-000000b0", "__DAY=21") in new stack
-- Executing [s@sub-record-check:5] Set("PJSIP/108-000000b0", "__MONTH=01") in new stack
-- Executing [s@sub-record-check:6] Set("PJSIP/108-000000b0", "__YEAR=2025") in new stack
-- Executing [s@sub-record-check:7] Set("PJSIP/108-000000b0", "__TIMESTR=20250121-090640") in new stack
-- Executing [s@sub-record-check:8] Set("PJSIP/108-000000b0", "__FROMEXTEN=108") in new stack
-- Executing [s@sub-record-check:9] Set("PJSIP/108-000000b0", "__MON_FMT=wav") in new stack
-- Executing [s@sub-record-check:10] NoOp("PJSIP/108-000000b0", "Recordings initialized") in new stack
-- Executing [s@sub-record-check:11] ExecIf("PJSIP/108-000000b0", "0?Set(ARG3=dontcare)") in new stack
-- Executing [s@sub-record-check:12] Set("PJSIP/108-000000b0", "REC_POLICY_MODE_SAVE=") in new stack
-- Executing [s@sub-record-check:13] ExecIf("PJSIP/108-000000b0", "0?Set(REC_STATUS=NO)") in new stack
-- Executing [s@sub-record-check:14] GotoIf("PJSIP/108-000000b0", "3?checkaction") in new stack
-- Goto (sub-record-check,s,17)
-- Executing [s@sub-record-check:17] GotoIf("PJSIP/108-000000b0", "1?sub-record-check,out,1") in new stack
-- Goto (sub-record-check,out,1)
-- Executing [out@sub-record-check:1] NoOp("PJSIP/108-000000b0", "Outbound Recording Check from 108 to 8005551212") in new stack
-- Executing [out@sub-record-check:2] Set("PJSIP/108-000000b0", "RECMODE=dontcare") in new stack
-- Executing [out@sub-record-check:3] ExecIf("PJSIP/108-000000b0", "1?Goto(routewins)") in new stack
-- Goto (sub-record-check,out,7)
-- Executing [out@sub-record-check:7] Gosub("PJSIP/108-000000b0", "recordcheck,1(dontcare,out,8005551212)") in new stack
-- Executing [recordcheck@sub-record-check:1] NoOp("PJSIP/108-000000b0", "Starting recording check against dontcare") in new stack
-- Executing [recordcheck@sub-record-check:2] Goto("PJSIP/108-000000b0", "dontcare") in new stack
-- Goto (sub-record-check,recordcheck,3)
-- Executing [recordcheck@sub-record-check:3] Return("PJSIP/108-000000b0", "") in new stack
-- Executing [out@sub-record-check:8] Return("PJSIP/108-000000b0", "") in new stack
-- Executing [8005551212@from-internal:3] Set("PJSIP/108-000000b0", "_ROUTEID=9") in new stack
-- Executing [8005551212@from-internal:4] Set("PJSIP/108-000000b0", "_ROUTENAME=OutboundRoute2") in new stack
-- Executing [8005551212@from-internal:5] Set("PJSIP/108-000000b0", "MOHCLASS=default") in new stack
-- Executing [8005551212@from-internal:6] ExecIf("PJSIP/108-000000b0", "0?Set(TRUNKCIDOVERRIDE=1{mynum})") in new stack
-- Executing [8005551212@from-internal:7] Set("PJSIP/108-000000b0", "_CALLERIDNAMEINTERNAL=DeskPhone") in new stack
-- Executing [8005551212@from-internal:8] Set("PJSIP/108-000000b0", "_CALLERIDNUMINTERNAL=108") in new stack
-- Executing [8005551212@from-internal:9] Set("PJSIP/108-000000b0", "_EMAILNOTIFICATION=FALSE") in new stack
-- Executing [8005551212@from-internal:10] Set("PJSIP/108-000000b0", "_NODEST=") in new stack
-- Executing [8005551212@from-internal:11] Gosub("PJSIP/108-000000b0", "macro-dialout-trunk,s,1(3,8005551212,,off)") in new stack
-- Executing [s@macro-dialout-trunk:1] Set("PJSIP/108-000000b0", "DIAL_TRUNK=3") in new stack
-- Executing [s@macro-dialout-trunk:2] ExecIf("PJSIP/108-000000b0", "0?Set(DIAL_OPTIONS=)") in new stack
-- Executing [s@macro-dialout-trunk:3] ExecIf("PJSIP/108-000000b0", "0?Set(DIAL_OPTIONS=)") in new stack
-- Executing [s@macro-dialout-trunk:4] ExecIf("PJSIP/108-000000b0", "0?Set(DIAL_OPTIONS=)") in new stack
-- Executing [s@macro-dialout-trunk:5] GosubIf("PJSIP/108-000000b0", "0?sub-pincheck,s,1()") in new stack
-- Executing [s@macro-dialout-trunk:6] ExecIf("PJSIP/108-000000b0", "0?Set(CALLERID(num)=108)") in new stack
-- Executing [s@macro-dialout-trunk:7] GotoIf("PJSIP/108-000000b0", "0?disabletrunk,1") in new stack
-- Executing [s@macro-dialout-trunk:8] Set("PJSIP/108-000000b0", "DIAL_NUMBER=8005551212") in new stack
-- Executing [s@macro-dialout-trunk:9] Set("PJSIP/108-000000b0", "DIAL_TRUNK_OPTIONS=") in new stack
-- Executing [s@macro-dialout-trunk:10] Set("PJSIP/108-000000b0", "OUTBOUND_GROUP=OUT_3") in new stack
-- Executing [s@macro-dialout-trunk:11] Set("PJSIP/108-000000b0", "DIAL_TRUNK_OPTIONS=R") in new stack
-- Executing [s@macro-dialout-trunk:12] ExecIf("PJSIP/108-000000b0", "0?Set(DIAL_TRUNK_OPTIONS=R)") in new stack
-- Executing [s@macro-dialout-trunk:13] GotoIf("PJSIP/108-000000b0", "0?nomax") in new stack
-- Executing [s@macro-dialout-trunk:14] GotoIf("PJSIP/108-000000b0", "0?chanfull") in new stack
-- Executing [s@macro-dialout-trunk:15] GotoIf("PJSIP/108-000000b0", "0?skipoutcid") in new stack
-- Executing [s@macro-dialout-trunk:16] Gosub("PJSIP/108-000000b0", "macro-outbound-callerid,s,1(3)") in new stack
-- Executing [s@macro-outbound-callerid:1] NoOp("PJSIP/108-000000b0", "108") in new stack
-- Executing [s@macro-outbound-callerid:2] NoOp("PJSIP/108-000000b0", "") in new stack
-- Executing [s@macro-outbound-callerid:3] NoOp("PJSIP/108-000000b0", "all") in new stack
-- Executing [s@macro-outbound-callerid:4] ExecIf("PJSIP/108-000000b0", "0?Set(CALLERID(name-pres)=)") in new stack
-- Executing [s@macro-outbound-callerid:5] ExecIf("PJSIP/108-000000b0", "0?Set(CALLERID(num-pres)=)") in new stack
-- Executing [s@macro-outbound-callerid:6] Set("PJSIP/108-000000b0", "HOTDESCKCHAN=108-000000b0") in new stack
-- Executing [s@macro-outbound-callerid:7] Set("PJSIP/108-000000b0", "HOTDESKEXTEN=108") in new stack
-- Executing [s@macro-outbound-callerid:8] Set("PJSIP/108-000000b0", "HOTDESKCALL=0") in new stack
-- Executing [s@macro-outbound-callerid:9] ExecIf("PJSIP/108-000000b0", "0?Set(HOTDESKCALL=1)") in new stack
-- Executing [s@macro-outbound-callerid:10] ExecIf("PJSIP/108-000000b0", "0?Set(CALLERID(name)=)") in new stack
-- Executing [s@macro-outbound-callerid:11] Set("PJSIP/108-000000b0", "ALLOWTHISROUTE=NO") in new stack
-- Executing [s@macro-outbound-callerid:12] ExecIf("PJSIP/108-000000b0", "0?Set(ALLOWTHISROUTE=YES)") in new stack
-- Executing [s@macro-outbound-callerid:13] ExecIf("PJSIP/108-000000b0", "0?Hangup()") in new stack
-- Executing [s@macro-outbound-callerid:14] ExecIf("PJSIP/108-000000b0", "0?Set(REALCALLERIDNUM=108)") in new stack
-- Executing [s@macro-outbound-callerid:15] ExecIf("PJSIP/108-000000b0", "0?Set(AMPUSER=108)") in new stack
-- Executing [s@macro-outbound-callerid:16] GotoIf("PJSIP/108-000000b0", "1?normcid") in new stack
-- Goto (macro-outbound-callerid,s,20)
-- Executing [s@macro-outbound-callerid:20] Set("PJSIP/108-000000b0", "USEROUTCID={mynum}") in new stack
-- Executing [s@macro-outbound-callerid:21] Set("PJSIP/108-000000b0", "EMERGENCYCID={mynum}") in new stack
-- Executing [s@macro-outbound-callerid:22] ExecIf("PJSIP/108-000000b0", "0?Set(EMERGENCYCID=)") in new stack
-- Executing [s@macro-outbound-callerid:23] Set("PJSIP/108-000000b0", "TRUNKOUTCID={mynum}") in new stack
-- Executing [s@macro-outbound-callerid:24] GotoIf("PJSIP/108-000000b0", "1?trunkcid") in new stack
-- Goto (macro-outbound-callerid,s,30)
-- Executing [s@macro-outbound-callerid:30] ExecIf("PJSIP/108-000000b0", "1?Set(CALLERID(all)={mynum})") in new stack
-- Executing [s@macro-outbound-callerid:31] ExecIf("PJSIP/108-000000b0", "1?Set(CALLERID(all)={mynum})") in new stack
-- Executing [s@macro-outbound-callerid:32] ExecIf("PJSIP/108-000000b0", "1?Set(CALLERID(all)={mynum})") in new stack
-- Executing [s@macro-outbound-callerid:33] ExecIf("PJSIP/108-000000b0", "0?Set(CALLERID(all)=108)") in new stack
-- Executing [s@macro-outbound-callerid:34] ExecIf("PJSIP/108-000000b0", "0?Set(CALLERID(all)=108)") in new stack
-- Executing [s@macro-outbound-callerid:35] Set("PJSIP/108-000000b0", "TIOHIDE=no") in new stack
-- Executing [s@macro-outbound-callerid:36] ExecIf("PJSIP/108-000000b0", "0?Set(CALLERID(name-pres)=prohib_passed_screen)") in new stack
-- Executing [s@macro-outbound-callerid:37] ExecIf("PJSIP/108-000000b0", "0?Set(CALLERID(num-pres)=prohib_passed_screen)") in new stack
-- Executing [s@macro-outbound-callerid:38] ExecIf("PJSIP/108-000000b0", "0?Set(CALLERID(name-pres)=prohib_passed_screen)") in new stack
-- Executing [s@macro-outbound-callerid:39] ExecIf("PJSIP/108-000000b0", "0?Set(CALLERID(num-pres)=prohib_passed_screen)") in new stack
-- Executing [s@macro-outbound-callerid:40] Set("PJSIP/108-000000b0", "CDR(outbound_cnum)={mynum}") in new stack
-- Executing [s@macro-outbound-callerid:41] Set("PJSIP/108-000000b0", "CDR(outbound_cnam)=") in new stack
-- Executing [s@macro-outbound-callerid:42] Return("PJSIP/108-000000b0", "") in new stack
-- Executing [s@macro-dialout-trunk:17] GosubIf("PJSIP/108-000000b0", "1?sub-flp-3,s,1()") in new stack
-- Executing [s@sub-flp-3:1] ExecIf("PJSIP/108-000000b0", "0?Return()") in new stack
-- Executing [s@sub-flp-3:2] ExecIf("PJSIP/108-000000b0", "0?Return()") in new stack
-- Executing [s@sub-flp-3:3] ExecIf("PJSIP/108-000000b0", "0?Return()") in new stack
-- Executing [s@sub-flp-3:4] ExecIf("PJSIP/108-000000b0", "0?Return()") in new stack
-- Executing [s@sub-flp-3:5] Return("PJSIP/108-000000b0", "") in new stack
-- Executing [s@macro-dialout-trunk:18] Set("PJSIP/108-000000b0", "OUTNUM=8005551212") in new stack
-- Executing [s@macro-dialout-trunk:19] Set("PJSIP/108-000000b0", "custom=AMP") in new stack
-- Executing [s@macro-dialout-trunk:20] ExecIf("PJSIP/108-000000b0", "0?Set(DIAL_TRUNK_MOH=default)") in new stack
-- Executing [s@macro-dialout-trunk:21] ExecIf("PJSIP/108-000000b0", "0?Set(DIAL_TRUNK_OPTIONS=RU(macro-confirm))") in new stack
-- Executing [s@macro-dialout-trunk:22] Gosub("PJSIP/108-000000b0", "macro-dialout-trunk-predial-hook,s,1()") in new stack
-- Executing [s@macro-dialout-trunk-predial-hook:1] Return("PJSIP/108-000000b0", "") in new stack
-- Executing [s@macro-dialout-trunk:23] GotoIf("PJSIP/108-000000b0", "0?bypass,1") in new stack
-- Executing [s@macro-dialout-trunk:24] ExecIf("PJSIP/108-000000b0", "1?Set(CONNECTEDLINE(num,i)=8005551212)") in new stack
-- Executing [s@macro-dialout-trunk:25] ExecIf("PJSIP/108-000000b0", "1?Set(CONNECTEDLINE(name,i)=CID:{mynum})") in new stack
-- Executing [s@macro-dialout-trunk:26] ExecIf("PJSIP/108-000000b0", "0?Set(CONNECTEDLINE(name,i)=CID:(Hidden){mynum})") in new stack
-- Executing [s@macro-dialout-trunk:27] GotoIf("PJSIP/108-000000b0", "1?customtrunk") in new stack
-- Goto (macro-dialout-trunk,s,33)
-- Executing [s@macro-dialout-trunk:33] Set("PJSIP/108-000000b0", "pre_num=AMP:PJSIP/GVGateway2/sip:") in new stack
-- Executing [s@macro-dialout-trunk:34] Set("PJSIP/108-000000b0", "the_num=OUTNUM") in new stack
-- Executing [s@macro-dialout-trunk:35] Set("PJSIP/108-000000b0", "post_num=@192.168.50.201:5063") in new stack
-- Executing [s@macro-dialout-trunk:36] GotoIf("PJSIP/108-000000b0", "1?outnum:skipoutnum") in new stack
-- Goto (macro-dialout-trunk,s,37)
-- Executing [s@macro-dialout-trunk:37] Set("PJSIP/108-000000b0", "the_num=8005551212") in new stack
-- Executing [s@macro-dialout-trunk:38] Dial("PJSIP/108-000000b0", "PJSIP/GVGateway2/sip:8005551212@192.168.50.201:5063,300,R") in new stack
-- Called PJSIP/GVGateway2/sip:8005551212@192.168.50.201:5063
<--- Transmitting SIP response (583 bytes) to UDP:192.168.50.196:5060 --->
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP 192.168.50.196:5060;rport=5060;received=192.168.50.196;branch=z9hG4bK1352023758
Call-ID: 0_1351946541@192.168.50.196
From: "108" <sip:108@192.168.50.202>;tag=1351910717
To: <sip:8005551212@192.168.50.202>;tag=fcc6d527-7067-40f5-a8ca-5d4e173a5ea7
CSeq: 2 INVITE
Server: FPBX-17.0.19.23(22.1.0)
Contact: <sip:192.168.50.202:5060>
Allow: OPTIONS, REGISTER, SUBSCRIBE, NOTIFY, PUBLISH, INVITE, ACK, BYE, CANCEL, UPDATE, PRACK, INFO, MESSAGE, REFER
P-Asserted-Identity: "CID:{mynum}" <sip:8005551212@192.168.50.202>
Content-Length: 0
<--- Transmitting SIP request (937 bytes) to UDP:192.168.50.201:5063 --->
INVITE sip:8005551212@192.168.50.201:5063 SIP/2.0
Via: SIP/2.0/UDP 192.168.50.202:5060;rport;branch=z9hG4bKPja0bf4917-8110-4231-ba20-0be3279e6c8e
From: <sip:{mynum}@192.168.50.202>;tag=871d170c-16c0-4e22-b5b0-88263a256892
To: <sip:8005551212@192.168.50.201>
Contact: <sip:asterisk@192.168.50.202:5060>
Call-ID: 1ed6b9cb-3848-4362-9a94-c2f564caa82d
CSeq: 18513 INVITE
Allow: OPTIONS, REGISTER, SUBSCRIBE, NOTIFY, PUBLISH, INVITE, ACK, BYE, CANCEL, UPDATE, PRACK, INFO, MESSAGE, REFER
Supported: 100rel, timer, replaces, norefersub, histinfo
Session-Expires: 1800
Min-SE: 90
Max-Forwards: 70
User-Agent: FPBX-17.0.19.23(22.1.0)
Content-Type: application/sdp
Content-Length: 239
v=0
o=- 635580807 635580807 IN IP4 192.168.50.202
s=Asterisk
c=IN IP4 192.168.50.202
t=0 0
m=audio 10784 RTP/AVP 0 101
a=rtpmap:0 PCMU/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=ptime:20
a=maxptime:140
a=sendrecv
<--- Received SIP response (409 bytes) from UDP:192.168.50.201:5063 --->
SIP/2.0 100 Trying
Call-ID: 1ed6b9cb-3848-4362-9a94-c2f564caa82d
CSeq: 18513 INVITE
Content-Length: 0
From: <sip:{mynum}@192.168.50.202>;tag=871d170c-16c0-4e22-b5b0-88263a256892
To: <sip:8005551212@192.168.50.201>;tag=SP4fa7fcc90e7dff114
Via: SIP/2.0/UDP 192.168.50.202:5060;branch=z9hG4bKPja0bf4917-8110-4231-ba20-0be3279e6c8e;received=192.168.50.202;rport=5060
Server: OBIHAI/OBi202-3.2.2.8680
<--- Received SIP response (412 bytes) from UDP:192.168.50.201:5063 --->
SIP/2.0 486 Busy Here
Call-ID: 1ed6b9cb-3848-4362-9a94-c2f564caa82d
CSeq: 18513 INVITE
Content-Length: 0
From: <sip:{mynum}@192.168.50.202>;tag=871d170c-16c0-4e22-b5b0-88263a256892
To: <sip:8005551212@192.168.50.201>;tag=SP4fa7fcc90e7dff114
Via: SIP/2.0/UDP 192.168.50.202:5060;branch=z9hG4bKPja0bf4917-8110-4231-ba20-0be3279e6c8e;received=192.168.50.202;rport=5060
Server: OBIHAI/OBi202-3.2.2.8680
<--- Transmitting SIP request (427 bytes) to UDP:192.168.50.201:5063 --->
ACK sip:8005551212@192.168.50.201:5063 SIP/2.0
Via: SIP/2.0/UDP 192.168.50.202:5060;rport;branch=z9hG4bKPja0bf4917-8110-4231-ba20-0be3279e6c8e
From: <sip:{mynum}@192.168.50.202>;tag=871d170c-16c0-4e22-b5b0-88263a256892
To: <sip:8005551212@192.168.50.201>;tag=SP4fa7fcc90e7dff114
Call-ID: 1ed6b9cb-3848-4362-9a94-c2f564caa82d
CSeq: 18513 ACK
Max-Forwards: 70
User-Agent: FPBX-17.0.19.23(22.1.0)
Content-Length: 0
== Everyone is busy/congested at this time (1:1/0/0)
-- Executing [s@macro-dialout-trunk:39] NoOp("PJSIP/108-000000b0", "Dial failed for some reason with DIALSTATUS = BUSY and HANGUPCAUSE = 17") in new stack
-- Executing [s@macro-dialout-trunk:40] GotoIf("PJSIP/108-000000b0", "0?continue,1:s-BUSY,1") in new stack
-- Goto (macro-dialout-trunk,s-BUSY,1)
-- Executing [s-BUSY@macro-dialout-trunk:1] NoOp("PJSIP/108-000000b0", "Dial failed due to trunk reporting BUSY - giving up") in new stack
-- Executing [s-BUSY@macro-dialout-trunk:2] PlayTones("PJSIP/108-000000b0", "busy") in new stack
-- Executing [s-BUSY@macro-dialout-trunk:3] Busy("PJSIP/108-000000b0", "20") in new stack
<--- Transmitting SIP response (564 bytes) to UDP:192.168.50.196:5060 --->
SIP/2.0 486 Busy Here
Via: SIP/2.0/UDP 192.168.50.196:5060;rport=5060;received=192.168.50.196;branch=z9hG4bK1352023758
Call-ID: 0_1351946541@192.168.50.196
From: "108" <sip:108@192.168.50.202>;tag=1351910717
To: <sip:8005551212@192.168.50.202>;tag=fcc6d527-7067-40f5-a8ca-5d4e173a5ea7
CSeq: 2 INVITE
Server: FPBX-17.0.19.23(22.1.0)
Allow: OPTIONS, REGISTER, SUBSCRIBE, NOTIFY, PUBLISH, INVITE, ACK, BYE, CANCEL, UPDATE, PRACK, INFO, MESSAGE, REFER
Reason: Q.850;cause=17
P-Asserted-Identity: "CID:{mynum}" <sip:s@192.168.50.202>
Content-Length: 0
== Spawn extension (macro-dialout-trunk, s-BUSY, 3) exited non-zero on 'PJSIP/108-000000b0'
-- Executing [h@macro-dialout-trunk:1] Gosub("PJSIP/108-000000b0", "macro-hangupcall,s,1()") in new stack
-- Executing [s@macro-hangupcall:1] GotoIf("PJSIP/108-000000b0", "1?theend") in new stack
-- Goto (macro-hangupcall,s,3)
-- Executing [s@macro-hangupcall:3] ExecIf("PJSIP/108-000000b0", "0?Set(CDR(recordingfile)=)") in new stack
-- Executing [s@macro-hangupcall:4] Hangup("PJSIP/108-000000b0", "") in new stack
== Spawn extension (macro-hangupcall, s, 4) exited non-zero on 'PJSIP/108-000000b0'
<--- Received SIP request (314 bytes) from UDP:192.168.50.196:5060 --->
ACK sip:8005551212@192.168.50.202:5060 SIP/2.0
Via: SIP/2.0/UDP 192.168.50.196:5060;branch=z9hG4bK1352023758
From: "108" <sip:108@192.168.50.202>;tag=1351910717
To: <sip:8005551212@192.168.50.202>;tag=fcc6d527-7067-40f5-a8ca-5d4e173a5ea7
Call-ID: 0_1351946541@192.168.50.196
CSeq: 2 ACK
Content-Length: 0
<--- Transmitting SIP request (431 bytes) to UDP:192.168.50.201:5060 --->
OPTIONS sip:192.168.50.201 SIP/2.0
Via: SIP/2.0/UDP 192.168.50.202:5060;rport;branch=z9hG4bKPj58d311e9-2007-4a69-bc95-ddf86fe12997
From: <sip:GVGateway2@192.168.50.202>;tag=3b7f1c9c-a4cf-4312-b845-d59b226fbefc
To: <sip:192.168.50.201>
Contact: <sip:GVGateway2@192.168.50.202:5060>
Call-ID: 473d67fb-273e-4e1a-b05f-26086f29f8cc
CSeq: 53472 OPTIONS
Max-Forwards: 70
User-Agent: FPBX-17.0.19.23(22.1.0)
Content-Length: 0
I need some quick help with a configuration issue.
Currently, when I call a DID that routes to my extension (extension 101), if the call is not answered, the PBX plays the message: “The person at extension 101 is not available.”
However, I would like the message to include the name associated with the extension. For example: “ at extension 101 is not available.”
Is there a way to configure the PBX to achieve this?
I would like to use Python for AGI in FreePBX 17.
To do that, pyst3 python package is needed.
In the past it was possible to run “pip install pyst3”, but in Debian 12 it will end up with “error: externally-managed-environment”
I have a similar problem to the one described, but in my case, the Voicemail widget shows the number of messages correctly. However, when I try to load them, I get an error in the top-right corner of the UCP interface (in red), and it asks me to check the log. Unfortunately, I don’t understand the log or what the issue might be. Can you help me?
Hello. We need to replace the 3CX system with FreePBX. I have transferred all local phone numbers. They’re calling. But I can’t configure external phone numbers. In any case, city numbers under the old system are issued without registration. Direct access to the city. Sorry for Google translator
Hello I am new to this the system is mostly operational but I get calls from this sip vicious and scanners in the system and I feel like I need help with this. What to do. The firewall seemed to ban an address and then it was removed and the list changed. I need help on this as to what to do… as this cannot continue…
Last year we tried to help FreePBX users by integrating our data with the fail2ban client. We’re starting this year with a new nftables client; which is great especially as the active blocked ip’s increase.
If you’re using nftables and would like to integrate our data (for FREE), we have the new nftables client available on GitHub:
Thank you again to our sponsors… and we always have room for more sponsors (wink wink Sangoma) =)
I’ve tried looking everywhere online with no success. FreePBX newbie looking for help with connecting to my PBX via VPN.
My setup-
FreePBX connected to a Unify Dream Machine Pro router. The WAN input is then connected to my ISPs router (they dont allow bridging etc). I think is called double NAT. I have managed to setup several extension internally with no problems and it runs great with a SIP Trunk, voicemail, IVR and BLF etc.
Currently hosting FreePBX on an old Dell Optiplex and using Yealink T46S / W60Bs for extensions.
I’m trying to add another T46S to another house and connect to my PBX via the VPN option. I’ve purchased SysAdmin Pro on the PBX for the VPN element.
For the life of me, I can’t seem to get the phone to connect to the PBX via the VPN.
I have tried port forwarding on my ISP/UDM with no joy.
I’ve created a DDNS using NoIP and this doesn’t seem to help for the VPN config file.
I’ve tried both 66.86 and 66.84 firmware and nothing seems to work.
Do I need to connect inside the network prior to going externally with the end point?
Will End Point Manager resolve all of this for me instead?
Any guidance would be much appreciated!
Please let me know if you need more info
There is a nice kb article with step by step instruction for Debian 12 and FPBX 17 installtion. One instructions with 42GB drive uses 4GB for swap partition and the other instruction for a 35GB drive uses 1GB for swap partition. Which of these settings is better for FreePBX, 1GB for swap seems too small but I don’t know FreePBX that much. The default/auto setup for FreePBX 16 with 45GB drive allocated 4.5GB swap portion.
We are standing up a new FreePBX server and are testing calls. The current issue is randomly, incoming calls will stop working and result in the caller getting a “number unavailable” notification. On every occurance, restarting the FreePBX server fixes the issue. Outgoing calls appear to be working normally even when incoming are not.
We have checked the network firewall and ensured ports are opened as well as SIP_ALG is turned off. Support from our trunk provider said the calls are being passed from them to us without issue. When our CDR is checked in the PBX server, no calls are showing when the issue occurs. When this happens every line will not receive incoming calls regardless of what external number is dialing in.
Does anyone have any insight on what might be the cause? It looks to be the actual PBX server, but incoming routes look correct, and it works between these reboot cycles.