Jitsi-Meet Jigasi FreePBX Asterisk Integration

My fix, for the disconnects, was the same as listed on this post.

So far so good! Thank you everyone!

1 Like

What i mean is goto your FreePBX Server, edit the chan_sip extension hit the “Advanced” tab. Scroll down to Port and set it to 5160, then scroll further down to Permit and add Jitsi’s IP and click submit>apply config.

This way the PBX server knows without a shadow of a doubt that the Jitsi Server IP is allowed and able to use that extension.

1 Like

Hi nightstryke
Would you mind sharing the IVR setup of the Freepbx - I struggle to set it up correctly to get the PIN to forward to jigasi…
The rest of the setup I think I’ve got in place, but it still remains to be proven…

@Michael_Brown: Thanks a lot, that fixed it for me as well!

Works like a charm now.

1 Like

@janlov An IVR isn’t necessary to setup in FreePBX for this, look further up where I said you need to edit the /etc/asterisk/extensions_override_freepbx.conf that’s essentially the IVR Hard Coded. You can setup your own system recording for this, but I just used the built in conference call recording already in FreePBX.

@nightstryke - you’re so right.
When using @EvilCreamsicle’s Very Nice Guide mentioned above everything works smoooth … on the Asterisk end.
However I strugle to get at PIN displayed in my meeting info - in fact the phonenumbers don’t show either ;( [I can get the numbers from command prompt with the same url as I loaded into Jigasi] :nauseated_face:
Any clues?

@janlov You didn’t read a word I said. Start over and follow what I said it works.

Oh, I read your every word :wink:
I got the Asterisk part working, in the sense that I can call the number and type the pin, and have it calling the sip line.

It’s the Jitsi-meet part I’m strugling with - for some reason, which I haven’t figured out yet, I cannot make it display the phonenumbers to dial not the pincode to use getting in to the right conference.

The only thing that happened after my “start over and follow” was that now Jigasi is no longer registering at the Asterisk anymore - it worked before…
The log now says “2020-04-07 07:40:09.447 SEVERE: [36] org.jitsi.meet.ComponentMain.log() host-unknown, host:localhost, port:5347
org.xmpp.component.ComponentException: host-unknown”
but the host is defined with (correct and reachable) IP number…

So in fact I’m a wee bit worse off than before starting over…
Anoying …

The display numbers you should follow Evilcreamsicle’s tutorial for that.

Host Phone Number .PHP and JSON

On a webserver that is NOT running on the Jitsi Meet server we are setting up, you will need to host two files.

First, the JSON file that will display your dial-in phone numbers:

{"message":"Phone numbers available.","numbers":{"US":["+1.555.555.1212"],"Germany":["+49.5551212"]},"numbersEnabled":true}

And Second, the PHP file that will serve the JSON and Content-Type Headers to Jitsi Meet:

<?php
    header('Content-Type: application/json');
    readfile("./jitsi_numbers.json");
    ?>

You must configure your web server to serve this PHP file over SSL
Since this is not hosted on your Jitsi Meet server, you must also enable Cross Origin Scripting (CORS) support.
You can use any web server, but here is an example of a VirtualHost entry if your web server is Apache:

<VirtualHost *:443>
        ServerAdmin you@domain.com
        ServerName assetbin.domain.com
        DocumentRoot /var/www/assetbin
 
        SSLEngine on
        SSLProtocol all -SSLv2 -SSLv3
        SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA
 
        SSLCertificateFile /etc/httpd/certs/domain.crt
        SSLCertificateKeyFile /etc/httpd/certs/domain.key
        SSLCertificateChainFile /etc/httpd/certs/domain.chain
 
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/assetbin>
                Options Indexes FollowSymLinks MultiViews
                DirectoryIndex index.html
                AllowOverride All
                Order allow,deny
                allow from all
 
                Header set Access-Control-Allow-Origin "*"
        </Directory>
        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>
        ErrorLog logs/assetbin_error.log
        LogLevel warn
        CustomLog logs/assetbin_access.log combined
</VirtualHost>

You should navigate to both of these in a web browser to make sure they are functional and accessible.

Enable Call-In Number Display in Jitsi Meet

The options to display the Phone Numbers list you just created, and the Meeting ID number, are available in Jitsi-Meet but undocumented.
NOTE: The Meeting ID display uses Jitsi Meet’s hosted ConferenceMapper API

Add the following lines to your Jitsi Meet configuration file at /etc/jitsi/meet/meet.domain.com-config.js where ‘meet.domain.com’ is the FQDN of your Jitsi Meet server:

// To enable sending statistics to callstats.io you must provide the
// Application ID and Secret.
// callStatsID: '',
// callStatsSecret: '',
 
// Call In Numbers and Codes   
dialInNumbersUrl: 'https://assetbin.domain.com/jitsiNumberList.php',
dialInConfCodeUrl: 'https://jitsi-api.jitsi.net/conferenceMapper',   
// ADD THE BELOW THREE LINES! 
// Don't change dialInConfCodeURL, it is the one that points at Jitsi's conferenceMapper API
 
// enables callstatsUsername to be reported as statsId and used
// by callstats as repoted remote id
// enableStatsID: false

Thanks :wink:
Got that part right.

Asterisk is transferring call correctly, but Jigasi never picks up.
Instead it logs:
2020-04-14 12:39:54.535 INFO: [31130] org.jitsi.jigasi.JvbConference.setXmppProvider().539 [ctx=158686799353238374849] Using ProtocolProviderServiceJabberImpl(Jabber:2be242b4@meet.myservername.com/2be242b4)
2020-04-14 12:39:54.550 SEVERE: [31134] impl.certificate.CertificateServiceImpl.verify().1064 Missing CertificateDialogService by default will not trust!
2020-04-14 12:39:54.550 INFO: [31134] impl.certificate.CertificateServiceImpl.checkCertTrusted().832 Untrusted certificate

seems I’ll never get to the end of this…

I’m currently make the same solution: dial in to Jitsi with use of FreePBX.

The guide of @EvilCreamsicle i’ve followed with also the extra information found in this topic.

I’m running FreePBX 15.

When calling in, i get a busy tone (Got SIP response 486 “Busy here” back from XX.XX.XX.XX:1024).

Asterisk Log:

== Using SIP RTP TOS bits 184
== Using SIP RTP CoS mark 5
> 0x37b3290 – Strict RTP learning after remote address set to: xx.xx.xx.xx:53878
== Extension Changed 223[ext-local] new state InUse for Notify User 201
== Extension Changed 223[ext-local] new state InUse for Notify User 204
– Executing [850@from-internal:1] GotoIf(“SIP/223-00002173”, “1?ext-local,850,1:followme-check,850,1”) in new stack
– Goto (ext-local,850,1)
– Executing [850@ext-local:1] Set(“SIP/223-00002173”, “__RINGTIMER=15”) in new stack
– Executing [850@ext-local:2] Read(“SIP/223-00002173”, “Pin,“custom/jitsipin””) in new stack
– <SIP/223-00002173> Playing ‘custom/jitsipin.slin’ (language ‘nl’)
> 0x37b3290 – Strict RTP switching to RTP target address xx.xx.xx.xx:53878 as source
> 0x37b3290 – Strict RTP learning complete - Locking on source address xx.xx.xx.xx:53878
– User entered ‘2027209802’
– Executing [850@ext-local:3] Verbose(“SIP/223-00002173”, “result is: 2027209802”) in new stack
result is: 2027209802
– Executing [850@ext-local:4] AGI(“SIP/223-00002173”, “jitsi_curling.sh,2027209802”) in new stack
– Launched AGI Script /var/lib/asterisk/agi-bin/jitsi_curling.sh
– <SIP/223-00002173>AGI Script jitsi_curling.sh completed, returning 0
– Executing [850@ext-local:5] Verbose(“SIP/223-00002173”, “result is: test”) in new stack
result is: test
– Executing [850@ext-local:6] Set(“SIP/223-00002173”, “HASH(__SIPHEADERS,Jitsi-Conference-Room)=test@muc.meet.jitsi”) in new stack
– Executing [850@ext-local:7] Macro(“SIP/223-00002173”, “exten-vm,novm,850,0,0,0”) in new stack
– Executing [s@macro-exten-vm:1] Macro(“SIP/223-00002173”, “user-callerid,”) in new stack
– Executing [s@macro-user-callerid:1] Set(“SIP/223-00002173”, “TOUCH_MONITOR=1586867966.8837”) in new stack
– Executing [s@macro-user-callerid:2] Set(“SIP/223-00002173”, “AMPUSER=223”) in new stack
– Executing [s@macro-user-callerid:3] Set(“SIP/223-00002173”, “HOTDESCKCHAN=223-00002173”) in new stack
– Executing [s@macro-user-callerid:4] Set(“SIP/223-00002173”, “HOTDESKEXTEN=223”) in new stack
– Executing [s@macro-user-callerid:5] Set(“SIP/223-00002173”, “HOTDESKCALL=0”) in new stack
– Executing [s@macro-user-callerid:6] ExecIf(“SIP/223-00002173”, “0?Set(HOTDESKCALL=1)”) in new stack
– Executing [s@macro-user-callerid:7] ExecIf(“SIP/223-00002173”, “0?Set(CALLERID(name)=)”) in new stack
– Executing [s@macro-user-callerid:8] GotoIf(“SIP/223-00002173”, “0?report”) in new stack
– Executing [s@macro-user-callerid:9] ExecIf(“SIP/223-00002173”, “1?Set(REALCALLERIDNUM=223)”) in new stack
– Executing [s@macro-user-callerid:10] Set(“SIP/223-00002173”, “AMPUSER=223”) in new stack
– Executing [s@macro-user-callerid:11] GotoIf(“SIP/223-00002173”, “0?limit”) in new stack
– Executing [s@macro-user-callerid:12] Set(“SIP/223-00002173”, “AMPUSERCIDNAME=Marcel - Thuis”) in new stack
– Executing [s@macro-user-callerid:13] ExecIf(“SIP/223-00002173”, “0?Set(__CIDMASQUERADING=TRUE)”) in new stack
– Executing [s@macro-user-callerid:14] GotoIf(“SIP/223-00002173”, “0?report”) in new stack
– Executing [s@macro-user-callerid:15] Set(“SIP/223-00002173”, “AMPUSERCID=223”) in new stack
– Executing [s@macro-user-callerid:16] Set(“SIP/223-00002173”, “__DIAL_OPTIONS=HhTtr”) in new stack
– Executing [s@macro-user-callerid:17] Set(“SIP/223-00002173”, “CALLERID(all)=“Marcel - Thuis” <223>”) in new stack
– Executing [s@macro-user-callerid:18] ExecIf(“SIP/223-00002173”, “0?Set(CALLERID(all)=850)”) in new stack
– Executing [s@macro-user-callerid:19] GotoIf(“SIP/223-00002173”, “0?limit”) in new stack
– Executing [s@macro-user-callerid:20] ExecIf(“SIP/223-00002173”, “0?Set(GROUP(concurrency_limit)=223)”) in new stack
– Executing [s@macro-user-callerid:21] ExecIf(“SIP/223-00002173”, “0?Set(CHANNEL(language)=)”) in new stack
– Executing [s@macro-user-callerid:22] NoOp(“SIP/223-00002173”, “Macro Depth is 2”) in new stack
– Executing [s@macro-user-callerid:23] GotoIf(“SIP/223-00002173”, “1?report2:macroerror”) in new stack
– Goto (macro-user-callerid,s,24)
– Executing [s@macro-user-callerid:24] GotoIf(“SIP/223-00002173”, “0?continue”) in new stack
– Executing [s@macro-user-callerid:25] ExecIf(“SIP/223-00002173”, “1?Set(__CALLEE_ACCOUNCODE=)”) in new stack
– Executing [s@macro-user-callerid:26] Set(“SIP/223-00002173”, “__TTL=64”) in new stack
– Executing [s@macro-user-callerid:27] GotoIf(“SIP/223-00002173”, “1?continue”) in new stack
– Goto (macro-user-callerid,s,43)
– Executing [s@macro-user-callerid:43] Set(“SIP/223-00002173”, “CALLERID(number)=223”) in new stack
– Executing [s@macro-user-callerid:44] Set(“SIP/223-00002173”, “CALLERID(name)=Marcel - Thuis”) in new stack
– Executing [s@macro-user-callerid:45] GotoIf(“SIP/223-00002173”, “0?cnum”) in new stack
– Executing [s@macro-user-callerid:46] Set(“SIP/223-00002173”, “CDR(cnam)=Marcel - Thuis”) in new stack
– Executing [s@macro-user-callerid:47] Set(“SIP/223-00002173”, “CDR(cnum)=223”) in new stack
– Executing [s@macro-user-callerid:48] Set(“SIP/223-00002173”, “CHANNEL(language)=nl”) in new stack
– Executing [s@macro-exten-vm:2] Set(“SIP/223-00002173”, “RingGroupMethod=none”) in new stack
– Executing [s@macro-exten-vm:3] Set(“SIP/223-00002173”, “__EXTTOCALL=850”) in new stack
– Executing [s@macro-exten-vm:4] Set(“SIP/223-00002173”, “__PICKUPMARK=850”) in new stack
– Executing [s@macro-exten-vm:5] Set(“SIP/223-00002173”, “RT=”) in new stack
– Executing [s@macro-exten-vm:6] ExecIf(“SIP/223-00002173”, “0?Macro(vm,novm,DIRECTDIAL,)”) in new stack
– Executing [s@macro-exten-vm:7] ExecIf(“SIP/223-00002173”, “0?MacroExit()”) in new stack
– Executing [s@macro-exten-vm:8] ExecIf(“SIP/223-00002173”, “0?Gosub(ext-intercom,*80850,1())”) in new stack
– Executing [s@macro-exten-vm:9] ExecIf(“SIP/223-00002173”, “0?MacroExit()”) in new stack
– Executing [s@macro-exten-vm:10] ExecIf(“SIP/223-00002173”, “0?ChanSpy(SIP/850,q)”) in new stack
– Executing [s@macro-exten-vm:11] ExecIf(“SIP/223-00002173”, “0?MacroExit()”) in new stack
[2020-04-14 12:39:34] ERROR[22109][C-0000086b]: res_pjsip_header_funcs.c:454 func_read_header: This function requires a PJSIP channel.
– Executing [s@macro-exten-vm:12] ExecIf(“SIP/223-00002173”, “0?Macro(vm,novm,DIRECTDIAL,)”) in new stack
[2020-04-14 12:39:34] ERROR[22109][C-0000086b]: res_pjsip_header_funcs.c:454 func_read_header: This function requires a PJSIP channel.
[2020-04-14 12:39:34] ERROR[22109][C-0000086b]: res_pjsip_header_funcs.c:454 func_read_header: This function requires a PJSIP channel.
– Executing [s@macro-exten-vm:13] ExecIf(“SIP/223-00002173”, “0?MacroExit()”) in new stack
[2020-04-14 12:39:34] ERROR[22109][C-0000086b]: res_pjsip_header_funcs.c:454 func_read_header: This function requires a PJSIP channel.
[2020-04-14 12:39:34] ERROR[22109][C-0000086b]: res_pjsip_header_funcs.c:454 func_read_header: This function requires a PJSIP channel.
– Executing [s@macro-exten-vm:14] ExecIf(“SIP/223-00002173”, “0?Gosub(ext-intercom,*80850,1())”) in new stack
[2020-04-14 12:39:34] ERROR[22109][C-0000086b]: res_pjsip_header_funcs.c:454 func_read_header: This function requires a PJSIP channel.
[2020-04-14 12:39:34] ERROR[22109][C-0000086b]: res_pjsip_header_funcs.c:454 func_read_header: This function requires a PJSIP channel.
– Executing [s@macro-exten-vm:15] ExecIf(“SIP/223-00002173”, “0?MacroExit()”) in new stack
[2020-04-14 12:39:34] ERROR[22109][C-0000086b]: res_pjsip_header_funcs.c:454 func_read_header: This function requires a PJSIP channel.
[2020-04-14 12:39:34] ERROR[22109][C-0000086b]: res_pjsip_header_funcs.c:454 func_read_header: This function requires a PJSIP channel.
– Executing [s@macro-exten-vm:16] ExecIf(“SIP/223-00002173”, “0?ChanSpy(SIP/850,q)”) in new stack
[2020-04-14 12:39:34] ERROR[22109][C-0000086b]: res_pjsip_header_funcs.c:454 func_read_header: This function requires a PJSIP channel.
[2020-04-14 12:39:34] ERROR[22109][C-0000086b]: res_pjsip_header_funcs.c:454 func_read_header: This function requires a PJSIP channel.
– Executing [s@macro-exten-vm:17] ExecIf(“SIP/223-00002173”, “0?MacroExit()”) in new stack
[2020-04-14 12:39:34] ERROR[22109][C-0000086b]: res_pjsip_header_funcs.c:454 func_read_header: This function requires a PJSIP channel.
– Executing [s@macro-exten-vm:18] Gosub(“SIP/223-00002173”, “sub-record-check,s,1(exten,850,dontcare)”) in new stack
– Executing [s@sub-record-check:1] GotoIf(“SIP/223-00002173”, “0?initialized”) in new stack
– Executing [s@sub-record-check:2] Set(“SIP/223-00002173”, “__REC_STATUS=INITIALIZED”) in new stack
– Executing [s@sub-record-check:3] Set(“SIP/223-00002173”, “NOW=1586867974”) in new stack
– Executing [s@sub-record-check:4] Set(“SIP/223-00002173”, “__DAY=14”) in new stack
– Executing [s@sub-record-check:5] Set(“SIP/223-00002173”, “__MONTH=04”) in new stack
– Executing [s@sub-record-check:6] Set(“SIP/223-00002173”, “__YEAR=2020”) in new stack
– Executing [s@sub-record-check:7] Set(“SIP/223-00002173”, “__TIMESTR=20200414-123934”) in new stack
– Executing [s@sub-record-check:8] Set(“SIP/223-00002173”, “__FROMEXTEN=223”) in new stack
– Executing [s@sub-record-check:9] Set(“SIP/223-00002173”, “__MON_FMT=wav”) in new stack
– Executing [s@sub-record-check:10] NoOp(“SIP/223-00002173”, “Recordings initialized”) in new stack
– Executing [s@sub-record-check:11] ExecIf(“SIP/223-00002173”, “0?Set(ARG3=dontcare)”) in new stack
– Executing [s@sub-record-check:12] Set(“SIP/223-00002173”, “REC_POLICY_MODE_SAVE=”) in new stack
– Executing [s@sub-record-check:13] ExecIf(“SIP/223-00002173”, “0?Set(REC_STATUS=NO)”) in new stack
– Executing [s@sub-record-check:14] GotoIf(“SIP/223-00002173”, “5?checkaction”) in new stack
– Goto (sub-record-check,s,17)
– Executing [s@sub-record-check:17] GotoIf(“SIP/223-00002173”, “1?sub-record-check,exten,1”) in new stack
– Goto (sub-record-check,exten,1)
– Executing [exten@sub-record-check:1] NoOp(“SIP/223-00002173”, “Exten Recording Check between 223 and 850”) in new stack
– Executing [exten@sub-record-check:2] Set(“SIP/223-00002173”, “CALLTYPE=internal”) in new stack
– Executing [exten@sub-record-check:3] ExecIf(“SIP/223-00002173”, “0?Set(CALLTYPE=)”) in new stack
– Executing [exten@sub-record-check:4] Set(“SIP/223-00002173”, “CALLEE=force”) in new stack
– Executing [exten@sub-record-check:5] ExecIf(“SIP/223-00002173”, “0?Set(CALLEE=dontcare)”) in new stack
– Executing [exten@sub-record-check:6] GotoIf(“SIP/223-00002173”, “0?callee”) in new stack
– Executing [exten@sub-record-check:7] GotoIf(“SIP/223-00002173”, “0?caller”) in new stack
– Executing [exten@sub-record-check:8] ExecIf(“SIP/223-00002173”, “2?Set(CALLER_PRI=10):Set(CALLER_PRI=0)”) in new stack
– Executing [exten@sub-record-check:9] ExecIf(“SIP/223-00002173”, “2?Set(CALLEE_PRI=10):Set(CALLEE_PRI=0)”) in new stack
– Executing [exten@sub-record-check:10] GotoIf(“SIP/223-00002173”, “1?caller:callee”) in new stack
– Goto (sub-record-check,exten,13)
– Executing [exten@sub-record-check:13] Set(“SIP/223-00002173”, “RECMODE=force”) in new stack
– Executing [exten@sub-record-check:14] ExecIf(“SIP/223-00002173”, “0?Set(RECMODE=dontcare)”) in new stack
– Executing [exten@sub-record-check:15] ExecIf(“SIP/223-00002173”, “0?Set(RECMODE=force)”) in new stack
– Executing [exten@sub-record-check:16] Gosub(“SIP/223-00002173”, “recordcheck,1(force,internal,850)”) in new stack
– Executing [recordcheck@sub-record-check:1] NoOp(“SIP/223-00002173”, “Starting recording check against force”) in new stack
– Executing [recordcheck@sub-record-check:2] Goto(“SIP/223-00002173”, “force”) in new stack
– Goto (sub-record-check,recordcheck,5)
– Executing [recordcheck@sub-record-check:5] Set(“SIP/223-00002173”, “__REC_POLICY_MODE=FORCE”) in new stack
– Executing [recordcheck@sub-record-check:6] GotoIf(“SIP/223-00002173”, “1?startrec”) in new stack
– Goto (sub-record-check,recordcheck,16)
– Executing [recordcheck@sub-record-check:16] NoOp(“SIP/223-00002173”, “Starting recording: internal, 850”) in new stack
– Executing [recordcheck@sub-record-check:17] Set(“SIP/223-00002173”, “__CALLFILENAME=internal-850-223-20200414-123934-1586867966.8837”) in new stack
– Executing [recordcheck@sub-record-check:18] MixMonitor(“SIP/223-00002173”, “2020/04/14/internal-850-223-20200414-123934-1586867966.8837.wav,abi(LOCAL_MIXMON_ID),”) in new stack
– Executing [recordcheck@sub-record-check:19] Set(“SIP/223-00002173”, “__MIXMON_ID=0x7f4b0c120750”) in new stack
– Executing [recordcheck@sub-record-check:20] Set(“SIP/223-00002173”, “__RECORD_ID=SIP/223-00002173”) in new stack
– Executing [recordcheck@sub-record-check:21] Set(“SIP/223-00002173”, “__REC_STATUS=RECORDING”) in new stack
– Executing [recordcheck@sub-record-check:22] Set(“SIP/223-00002173”, “CDR(recordingfile)=internal-850-223-20200414-123934-1586867966.8837.wav”) in new stack
– Executing [recordcheck@sub-record-check:23] Return(“SIP/223-00002173”, “”) in new stack
– Executing [exten@sub-record-check:17] Return(“SIP/223-00002173”, “”) in new stack
– Executing [s@macro-exten-vm:19] GotoIf(“SIP/223-00002173”, “1?macrodial”) in new stack
– Goto (macro-exten-vm,s,25)
– Executing [s@macro-exten-vm:25] GosubIf(“SIP/223-00002173”, “0?clrheader,1()”) in new stack
– Executing [s@macro-exten-vm:26] Macro(“SIP/223-00002173”, “dial-one,HhTtr,850”) in new stack
– Executing [s@macro-dial-one:1] Set(“SIP/223-00002173”, “DEXTEN=850”) in new stack
– Executing [s@macro-dial-one:2] Set(“SIP/223-00002173”, “__CRM_SOURCE=223”) in new stack
– Executing [s@macro-dial-one:3] ExecIf(“SIP/223-00002173”, “0?Set(__EXTTOCALL=850)”) in new stack
– Executing [s@macro-dial-one:4] Set(“SIP/223-00002173”, “DIALSTATUS_CW=”) in new stack
– Executing [s@macro-dial-one:5] GosubIf(“SIP/223-00002173”, “0?screen,1()”) in new stack
– Executing [s@macro-dial-one:6] GosubIf(“SIP/223-00002173”, “0?cf,1()”) in new stack
– Executing [s@macro-dial-one:7] GotoIf(“SIP/223-00002173”, “1?skip1”) in new stack
– Goto (macro-dial-one,s,10)
– Executing [s@macro-dial-one:10] GotoIf(“SIP/223-00002173”, “0?nodial”) in new stack
– Executing [s@macro-dial-one:11] GotoIf(“SIP/223-00002173”, “0?continue”) in new stack
– Executing [s@macro-dial-one:12] Set(“SIP/223-00002173”, “EXTHASCW=ENABLED”) in new stack
– Executing [s@macro-dial-one:13] GotoIf(“SIP/223-00002173”, “0?next1:cwinusebusy”) in new stack
– Goto (macro-dial-one,s,25)
– Executing [s@macro-dial-one:25] GotoIf(“SIP/223-00002173”, “0?next3:continue”) in new stack
– Goto (macro-dial-one,s,27)
– Executing [s@macro-dial-one:27] GotoIf(“SIP/223-00002173”, “0?nodial”) in new stack
– Executing [s@macro-dial-one:28] GosubIf(“SIP/223-00002173”, “1?dstring,1():dlocal,1()”) in new stack
– Executing [dstring@macro-dial-one:1] Set(“SIP/223-00002173”, “DSTRING=”) in new stack
– Executing [dstring@macro-dial-one:2] Set(“SIP/223-00002173”, “DEVICES=850”) in new stack
– Executing [dstring@macro-dial-one:3] ExecIf(“SIP/223-00002173”, “0?Return()”) in new stack
– Executing [dstring@macro-dial-one:4] ExecIf(“SIP/223-00002173”, “0?Set(DEVICES=50)”) in new stack
– Executing [dstring@macro-dial-one:5] Set(“SIP/223-00002173”, “LOOPCNT=1”) in new stack
– Executing [dstring@macro-dial-one:6] Set(“SIP/223-00002173”, “ITER=1”) in new stack
– Executing [dstring@macro-dial-one:7] Set(“SIP/223-00002173”, “THISDIAL=SIP/850”) in new stack
– Executing [dstring@macro-dial-one:8] GotoIf(“SIP/223-00002173”, “1?docheck”) in new stack
– Goto (macro-dial-one,dstring,14)
– Executing [dstring@macro-dial-one:14] GotoIf(“SIP/223-00002173”, “0?skipset”) in new stack
– Executing [dstring@macro-dial-one:15] Set(“SIP/223-00002173”, “DSTRING=SIP/850&”) in new stack
– Executing [dstring@macro-dial-one:16] Set(“SIP/223-00002173”, “ITER=2”) in new stack
– Executing [dstring@macro-dial-one:17] GotoIf(“SIP/223-00002173”, “0?begin”) in new stack
– Executing [dstring@macro-dial-one:18] ExecIf(“SIP/223-00002173”, “0?Return()”) in new stack
– Executing [dstring@macro-dial-one:19] Set(“SIP/223-00002173”, “DSTRING=SIP/850”) in new stack
– Executing [dstring@macro-dial-one:20] Return(“SIP/223-00002173”, “”) in new stack
– Executing [s@macro-dial-one:29] GotoIf(“SIP/223-00002173”, “0?nodial”) in new stack
– Executing [s@macro-dial-one:30] GotoIf(“SIP/223-00002173”, “0?skiptrace”) in new stack
– Executing [s@macro-dial-one:31] GosubIf(“SIP/223-00002173”, “1?ctset,1():ctclear,1()”) in new stack
– Executing [ctset@macro-dial-one:1] Set(“SIP/223-00002173”, “DB(CALLTRACE/850)=223”) in new stack
– Executing [ctset@macro-dial-one:2] Return(“SIP/223-00002173”, “”) in new stack
– Executing [s@macro-dial-one:32] Set(“SIP/223-00002173”, “D_OPTIONS=HhTtr”) in new stack
– Executing [s@macro-dial-one:33] GosubIf(“SIP/223-00002173”, “0?func-set-sipheader,s,1(Alert-Info,)”) in new stack
– Executing [s@macro-dial-one:34] NoOp(“SIP/223-00002173”, "Blind Transfer: , Attended Transfer: , User: 223, Alert Info: ") in new stack
– Executing [s@macro-dial-one:35] ExecIf(“SIP/223-00002173”, “1?Set(ALERT_INFO=)”) in new stack
– Executing [s@macro-dial-one:36] ExecIf(“SIP/223-00002173”, “0?Set(ALERT_INFO=)”) in new stack
– Executing [s@macro-dial-one:37] ExecIf(“SIP/223-00002173”, “0?Set(ALERT_INFO=)”) in new stack
– Executing [s@macro-dial-one:38] ExecIf(“SIP/223-00002173”, “0?Set(ALERT_INFO=Normal;volume=)”) in new stack
– Executing [s@macro-dial-one:39] ExecIf(“SIP/223-00002173”, “0?Set(ALERT_INFO=Normal;volume=)”) in new stack
– Executing [s@macro-dial-one:40] GosubIf(“SIP/223-00002173”, “0?func-set-sipheader,s,1(Alert-Info,)”) in new stack
– Executing [s@macro-dial-one:41] ExecIf(“SIP/223-00002173”, “0?Set(CHANNEL(musicclass)=)”) in new stack
– Executing [s@macro-dial-one:42] GosubIf(“SIP/223-00002173”, “0?qwait,1()”) in new stack
– Executing [s@macro-dial-one:43] Set(“SIP/223-00002173”, “__CWIGNORE=”) in new stack
– Executing [s@macro-dial-one:44] Set(“SIP/223-00002173”, “__KEEPCID=TRUE”) in new stack
– Executing [s@macro-dial-one:45] GotoIf(“SIP/223-00002173”, “0?usegoto,1”) in new stack
– Executing [s@macro-dial-one:46] GotoIf(“SIP/223-00002173”, “0?godial”) in new stack
– Executing [s@macro-dial-one:47] Gosub(“SIP/223-00002173”, “sub-presencestate-display,s,1(850)”) in new stack
– Executing [s@sub-presencestate-display:1] Goto(“SIP/223-00002173”, “state-available,1”) in new stack
– Goto (sub-presencestate-display,state-available,1)
– Executing [state-available@sub-presencestate-display:1] Set(“SIP/223-00002173”, “PRESENCESTATE_DISPLAY=(Available)”) in new stack
– Executing [state-available@sub-presencestate-display:2] Return(“SIP/223-00002173”, “”) in new stack
– Executing [s@macro-dial-one:48] Set(“SIP/223-00002173”, “CONNECTEDLINE(name,i)=Jitsi(Available)”) in new stack
– Executing [s@macro-dial-one:49] Set(“SIP/223-00002173”, “CONNECTEDLINE(num)=850”) in new stack
– Executing [s@macro-dial-one:50] Set(“SIP/223-00002173”, “D_OPTIONS=HhTtr”) in new stack
– Executing [s@macro-dial-one:51] Macro(“SIP/223-00002173”, “dialout-one-predial-hook,”) in new stack
– Executing [s@macro-dialout-one-predial-hook:1] MacroExit(“SIP/223-00002173”, “”) in new stack
– Executing [s@macro-dial-one:52] ExecIf(“SIP/223-00002173”, “0?Set(D_OPTIONS=HhtrI)”) in new stack
– Executing [s@macro-dial-one:53] ExecIf(“SIP/223-00002173”, “0?Set(CWRING=r(callwaiting)):Set(CWRING=)”) in new stack
– Executing [s@macro-dial-one:54] NoOp(“SIP/223-00002173”, “”) in new stack
– Executing [s@macro-dial-one:55] ExecIf(“SIP/223-00002173”, “0?Set(D_OPTIONS=HhTtrg)”) in new stack
– Executing [s@macro-dial-one:56] Dial(“SIP/223-00002173”, “SIP/850,HhTtrb(func-apply-sipheaders^s^1)”) in new stack
== Using SIP RTP TOS bits 184
== Using SIP RTP CoS mark 5
– SIP/850-00002174 Internal Gosub(func-apply-sipheaders,s,1) start
– Executing [s@func-apply-sipheaders:1] ExecIf(“SIP/850-00002174”, “0?Set(CHANNEL(hangup_handler_push)=crm-hangup,s,1)”) in new stack
– Executing [s@func-apply-sipheaders:2] NoOp(“SIP/850-00002174”, “Applying SIP Headers to channel SIP/850-00002174”) in new stack
– Executing [s@func-apply-sipheaders:3] Set(“SIP/850-00002174”, “TECH=SIP”) in new stack
– Executing [s@func-apply-sipheaders:4] Set(“SIP/850-00002174”, “SIPHEADERKEYS=Jitsi-Conference-Room”) in new stack
– Executing [s@func-apply-sipheaders:5] While(“SIP/850-00002174”, “1”) in new stack
– Executing [s@func-apply-sipheaders:6] Set(“SIP/850-00002174”, “sipheader=test@muc.meet.jitsi”) in new stack
– Executing [s@func-apply-sipheaders:7] ExecIf(“SIP/850-00002174”, “0?SIPRemoveHeader(Jitsi-Conference-Room:)”) in new stack
– Executing [s@func-apply-sipheaders:8] ExecIf(“SIP/850-00002174”, “0?Set(sipheader=http://127.0.0.1;info=test@muc.meet.jitsi)”) in new stack
– Executing [s@func-apply-sipheaders:9] ExecIf(“SIP/850-00002174”, “0?Set(sipheader=http://127.0.0.1test@muc.meet.jitsi)”) in new stack
– Executing [s@func-apply-sipheaders:10] ExecIf(“SIP/850-00002174”, “1?SIPAddHeader(Jitsi-Conference-Room:test@muc.meet.jitsi)”) in new stack
– Executing [s@func-apply-sipheaders:11] EndWhile(“SIP/850-00002174”, “”) in new stack
– Executing [s@func-apply-sipheaders:5] While(“SIP/850-00002174”, “0”) in new stack
– Executing [s@func-apply-sipheaders:12] Return(“SIP/850-00002174”, “”) in new stack
== Spawn extension (from-internal, 850, 1) exited non-zero on ‘SIP/850-00002174’
– SIP/850-00002174 Internal Gosub(func-apply-sipheaders,s,1) complete GOSUB_RETVAL=
== Begin MixMonitor Recording SIP/223-00002173
– Called SIP/850
– SIP/850-00002174 is ringing
– SIP/850-00002174 is ringing
– Got SIP response 486 “Busy here” back from xx.xx.xx.xx:1024
– SIP/850-00002174 is busy

The Jigasi gives as error: No JVB room name provided in INVITE header

Jigasi log:

Jigasi 2020-04-14 14:39:34.231 INFO: [349] org.jitsi.jigasi.SipGateway.incomingCallReceived().188 Incoming call received…
Jigasi 2020-04-14 14:39:35.232 INFO: [350] org.jitsi.jigasi.SipGatewaySession.run().1306 [ctx=15868679742311243756996] No JVB room name provided in INVITE header
Jigasi 2020-04-14 14:39:35.237 INFO: [107] org.jitsi.jigasi.SipGatewaySession.handleCallState().1138 [ctx=15868679742311243756996] SIP call ended: CallPeerChangeEvent: type=CallPeerStatusChange oldV=net.java.sip.communicator.service.protocol.CallPeerState:Incoming Call newV=net.java.sip.communicator.service.protocol.CallPeerState:Failed for peer=XXXX <223xxxxxxxxx.xxx>;status=Failed
Jigasi 2020-04-14 14:39:35.237 INFO: [107] org.jitsi.jigasi.SipGatewaySession.sipCallEnded().629 [ctx=15868679742311243756996] Sip call ended: Call: id=15868679742291088049844 peers=0
Jigasi 2020-04-14 14:39:35.237 SEVERE: [107] org.jitsi.jigasi.AbstractGateway.notifyCallEnded().120 [ctx=15868679742311243756996] Call resource not exists for session.
Jigasi 2020-04-14 14:39:35.238 INFO: [107] org.jitsi.jigasi.SipGatewaySession.peerStateChanged().1204 null SIP peer state: Failed

I’ve tried all different ** /etc/asterisk/extensions_override_freepbx.conf** configurations found in this topic.

Any ideas? Thank you.

Are you setting the sip header for the room? https://github.com/jitsi/jigasi#incoming-calls

In addition to damencho’s comment about sending the header… make sure you’re also using the correct dialplan commands for your channel types. I see a lot of SIP commands in the log that should be PJSIP if you’re using a PJSIP extension.

A busy tone sounds like it’s sending the call to the endpoint , but wrong channel types can create all sorts of odd problems.

If all else fails, go back to basics and then try tackling something larger. As in, try just setting up a custom context with fewest steps possible just so that dialing something like 1234 routes to your sample room. get that to work first , then build on that.

Hi All,

Can some one guide me the configuration with FreePBX? Specifically for the Inbound Routes in FreePBX. I have clearly followed the instructions and I have managed to get the following work: Host Phone Number. PHP and JSON & Enable Call-In Number Display in Jitsi Meet.

Any help in creating the Inbound Routes in FreePBX can be greatly appreciated. Thanks in advance.

Regards,
Bhargav K

@Bhargav.K Make sure you have a SIP Provider setup in FreePBX connected and working before you attempt to connect FreePBX to Jitsi-Meet. Also your inbound route should go straight to the extension defined in the /etc/asterisk/extensions_override_freepbx.conf

Thanks for your reply. I have purchased the DID from didforsale.com and I have configured that with FreePBX. When I select “Play Recording” from “Set Destination” in " Inbound Routes", I can hear my recording. This is clearly stating that the SIP Provider setup with FreePBX is working.

I am stuck at the point “How to create an inbound route should go straight to the extension defined”. Any of that help is highly appreciated.

Below I am including my screenshots of the extension that I made and Inbound Rule that I defined.

Thanks,
Bhargav

Inbound Routes

!

Extension

!

Alright you’re using Chan_SIP, look at your images you should Edit Extension click Advanced and scroll down to port and change it to use port 5160 as that’s the port Chan_Sip uses in latest FreePBX. Chan_PJSIP uses port 5060 in the latest FreePBX.

Also under Permit you may want to add the ip of your jitsi-meet server if you have jigasi running on it or it should be the ip of the server hosting jigasi.

Thanks for your message nightstryke, I have changed the port and I have added the IP of my Jitsi-Meet server in Permit. Even now I found not get it connected. Long continuous beeps.

I also have a quick question, should the “dialInNumbersUrl: https://api.jsonbin.io/b/5e924dbccc62be4369c31a82”, should be ending with php?, I think that it might not need to end iin PHP. Please correct me if I am wrong.