SIP Integration

Greeting,

Trying to implement SIP call-in functionality the same way you guys did it with Voximplant however I am having hard time configuring the required scenario over Voximplant portal.

Is it possible you can share some details about what need to be done to have the required dialplan working ?

Note : dialInNumbersUrl and dialInConfCodeUrl are working fine, also Jigasi is correctly configured, the only part I am missing is the custom Dial-plan.

Will appriciate it if you can guide me to get this working.

Best Regards,
Mohamed Abada

In voximplant you create scenario, attach it to a route and the route attached to a number.

  1. In the scenario you need to initialise IVR and answer the call once you get AppEvents.CallAlerting event.
  2. After user had input the needed number you create an http request to the conference mapper to convert that pin to a meeting name.
  3. Then you need to choose the jigasi instance to use, if multiple. Once you have a username that is used by the jigasi sip account you dial it passing the needed information, here is a snipet:
VoxEngine.callUser({
                    username: username,
                    callerid: inboundCall.callerid(),
                    displayName: inboundCall.displayName(),
                    extraHeaders: {
                        "X-Room-Name": encodeURI(confJID),
                        "X-Domain-Base": confDomain,
                        "VI-CallTimeout": 600
                    },
                    mixStreams: "mix",
                    audioLevelExtension: true
                });

Hope this helps. If you have a more questions, shoot.
There are examples on their site on how to use the IVR and the API is a whole.

Thanks a lot @damencho for your support.

It would be great if you can share some more details about :

  1. After user had input the needed number you create an http request to the conference mapper to convert that pin to a meeting name.
  2. Then you need to choose the jigasi instance to use, if multiple. Once you have a username that is used by the jigasi sip account you dial it passing the needed information, here is a snipet:

Note : I am using a stand-alone Jigasi server configured with the user created at Voximplant side.

If you can share a sample of how this is done at your side it would be fantastic.

Best Regards,
Mohamed Abada

This is the snippet I already pasted.

You can check for samples: https://voximplant.com/docs/references/voxengine/ivr

@damencho there’s no details shared about API call on this URL and and on the snippet provided.

If by any chance you can share how it can be done would be great.

Best Regards,
Mohamed Abada

This is how to make a call to jigasi:

VoxEngine.callUser({
                    username: username,
                    callerid: inboundCall.callerid(),
                    displayName: inboundCall.displayName(),
                    extraHeaders: {
                        "X-Room-Name": encodeURI(confJID),
                        "X-Domain-Base": confDomain,
                        "VI-CallTimeout": 600
                    },
                    mixStreams: "mix",
                    audioLevelExtension: true
                });

I cannot give you an example at the moment, sorry, I can try to extract something and give you an example but this will happen the second or third week of next year at earliest.
You can find examples in the documentation link I sent you and I suppose there must be examples and here: https://github.com/voximplant

Thanks a lot for your support @damencho
Happy Christmas for you and for the rest of the team.

We managed to implement the IVR and got confernace mapper integrated at voximplant side, the good news is that Inbound calls are connecting now, However we have the below major issues at the moment :

1- No Audio for SIP In-bound calls "Two Ways"
2- SIP In-bound Call is failing after few seconds.
3- Out-bound calls are not connecting at all.

I am attaching my Jigasi logs for In-bound calls, if you can take a look and let me know if you spotted anything would be great.

Versions

# dpkg -s jigasi | grep Version 
Version: 1.1-45-g7ca838d-1

# dpkg -s jicofo | grep Version 
Version: 1.0-514-1

# dpkg -s prosody | grep Version 
Version: 0.9.12-2+deb9u2

# dpkg -s jitsi-videobridge2 | grep Version 
Version: 2.1-50-gffb77f9-1

Best Regards,
Mohamed AbadaJigasi.log (6.9 KB)

Any idea what is going on here ?

@damencho any support here ?

@damencho Happy new year.

I hope you’re doing well.

I did some changes to Voximplant scenario adding sendMediaBetween and now I have audio but only one way.

Jitsi > Mobile | working
Mobile > Jitsi | No Audio

As I can see in the attached .pcap file RTP stream, There is media from the caller (PSTN phone) to Jigasi, However at Jitsi Web App I am not able to hear anything from the mobile.

Any idea what I might be missing ?

Best Regards,
Mohamed Abadadump.pcap (768.8 KB)

Would you please help here ?

Are all ports open between jvb and jigasi?

Both hosted on the same server, AWS EC2.

Check jigasi pcap file, what do you see?
At some point I remember having problem running asterisk and jigasi on the same machine and the resolution was to move asterisk away and it started working, but it is not the same and I jigasi running on same machine as jvb should not be a problem… Check what happens between jigasi and jvb … How are outbound calls failing, anu jigasi logs?

PCAP is suggesting that media is flowing from Voximplant PSTN, However at JVB it is being dropped for some reason.

The wierd thing is that it worked with IPPI but we decided to move to Voximplant because of the fact that they offer customized IVRs.

I am wondering if this have anything to do with the fact that EC2 is behind NAT ?

Attached you can find Jigasi Logs.

Best Regards,
Mohamed AbadaJigasi.log (7.9 KB)

This is strange:

2020-01-06 12:10:15.398 WARNING: [76] impl.protocol.jabber.IceUdpTransportManager.startConnectivityEstablishment().1073 No ICE media stream for media: audio - ignored candidates.

What are the codecs enabled for the xmpp account connecting to jvb?

One thing voxmiplant has is multi-stream support. In the examples I had given this is enabled mixStreams: "mix",. Not sure why your sip call is using PCMA, but in this case jigasi needs to transcode every stream.
When using the voxmiplant mixing, (you need to enable it in jigasi) the opus coming from the clients and jvb goes through jigasi without beeing transcoded and is sent to voximplant, which mixes the multiple streams to send it as one stream to the other side. This significantly reduces load on jigasi instances.

To enable translator mode you need to enable the following 3 props:



Hi @damencho

MixStreams is enabled in Voximplant scenario, I also enabled transaltor mode on jigasi as suggested, However I am still getting the same result, audio is being dropped by JVB still.

Attached you can find me sip-communicator.properties and jigasi latest logs.

Best Regards,
Mohamed Abada

Note: as I am was suspecting that it might be a NATing issue, I tested with Jigasi installed on a DO instance without NATing and I got the exact same result.

Have you tried moving jigasi on a machine different from jvb?

Or you say in the non-vox scenario it works on the same machine?