drachtio / ansible-role-fsmrf

ansible role for building a Freeswitch to use with drachtio-fsmrf
MIT License
5 stars 29 forks source link

How to install #7

Open Reikooters opened 3 years ago

Reikooters commented 3 years ago

Hi there

I'm new to Freeswitch and have been playing around with it recently. I saw your repository https://github.com/davehorton/drachtio-freeswitch-modules and wanted to try it out, which lead me to this repository.

How would I install this? I have never used ansible before.

I did a bit of googling and here is what I tried.

I have a clean install of Debian 10. I installed ansible as per below:

sudo apt update
sudo apt install ansible -y

I saw you posted this playbook on this issue (https://github.com/davehorton/ansible-role-fsmrf/issues/6), which appears to be more current than the one on the readme:

---
- hosts: all
  become: yes
  vars_prompt:
    - name: "build_with_extra"
      prompt: "Include the extra modules (mod_aws_transcribe, mod_google_transcribe, mod_google_tts, mod_dialogflow)?"
      private: no
      default: false
    - name: "cloud_provider"
      prompt: "Cloud provider: aws, gcp, azure, digital_ocean"
      private: no
      default: none

  roles:
    - ansible-role-fsmrf

I created a file with the above content called install.yml in the root directory of where I extracted the files to, and tried the following command (found online for running a playbook locally)

ansible-playbook -c local -i localhost, install.yml

But I got the following error:

ERROR! the role 'ansible-role-fsmrf' was not found in /root/ansible-role-fsmrf-master/roles:/root/.ansible/roles:/usr/share/ansible/roles:/etc/ansible/roles:/root/ansible-role-fsmrf-master

The error appears to have been in '/root/ansible-role-fsmrf-master/install.yml': line 15, column 7, but may
be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:

  roles:
    - ansible-role-fsmrf
      ^ here

I noticed there is no roles folder in the repository. Should this file be in a specific folder, is there another file I need to create, or am I way off?

Any guidance would be appreciated.

davehorton commented 3 years ago

first, have a look at where ansible looks for its configuration files.

Your problem is that ansible is not finding your ansible-role-fsmrf folder.

In my case, put my ansible config file under my home directory, and configure it to look for roles under a 'git' folder where I have them all checked out:

$ more ~/.ansible.cfg
[defaults]
roles_path = /Users/dhorton/beachdog-enterprises/beachdog-networks/git

and you can see that I have that role in the configured location:

$ ls -lrt ~/beachdog-enterprises/beachdog-networks/git/ansible-role-fsmrf/
total 16
drwxr-xr-x   3 dhorton  staff    96 Feb 13  2018 vars
drwxr-xr-x   3 dhorton  staff    96 Feb 13  2018 handlers
drwxr-xr-x   4 dhorton  staff   128 Feb 13  2018 tests
-rw-r--r--   1 dhorton  staff  1068 Mar 14  2018 LICENSE
drwxr-xr-x   9 dhorton  staff   288 Oct 25  2019 templates
-rw-r--r--   1 dhorton  staff  3304 Oct  4 14:06 README.md
drwxr-xr-x   3 dhorton  staff    96 Oct  4 14:06 defaults
drwxr-xr-x  11 dhorton  staff   352 Oct  4 14:06 files
drwxr-xr-x   4 dhorton  staff   128 Oct  4 14:06 tasks

With that in place, you can run ansible-playbook from any folder and it will find your roles.

(By the way, running ansible locally is not something I do, so I am not sure how that will work out for you. I find it easier to run ansible from my laptop against the server(s) that I want to configure)

Reikooters commented 3 years ago

Thanks for the fast response. What I had to do was set up my folders like so:

/ (install.yml I created here)
/roles/ansible-role-fsmrf/ (checked out code here)

Basically it was looking for a roles folder under the current directory, and then a folder under that matching the role name. Then it started working.

Sorry if this is the wrong place to ask - but what would be the next steps I should take?

My goal is to have incoming calls on Freeswitch handled by IVRs (these will be different applications based on the number called). Users will interact with the IVRs using voice, so I want to use google text to speech/speech to text/dialogflow, which is how I found your freeswitch modules repository originally.

Based on the examples in your modules repo (I'm looking at the google_tts.js as a basic example), I'll need drachtio-server, so I've installed that using your ansible-role-drachtio repo. So I have drachtio-fsmrf and drachtio-server installed.

What I'm confused about now is how I configure freeswitch (or drachtio) so that it knows what application to run to handle the call when a call comes in, so I can actually get developing. For example, if I dial extension 4000 I want the call to be handled by application A, where as if I dial extension 4001 I want the call to be handled by application B. etc. In plain Freeswitch this can be done by setting up a dialplan for each extension that uses a javascript action, but I'm not sure how to do this using drachtio. I saw the mrf.xml file in the freeswitch dialplan folder, but it looks like I shouldn't be touching this and instead I should configure it somewhere else.

Can you please point me in the right direction?

Reikooters commented 3 years ago

Hi there,

I think I've made a little progress. In /etc/drachtio.conf.xml I've uncommented the request-handlers tag and put the url to an API I've created, as per https://drachtio.org/docs/drachtio-server#request-handlers-section

My API is receiving the request when I try to make a call which is good. Currently my API just logs the requests and responds with the below rejection (example from the link above).

{"reject":{"data":{"status":"503","reason":"reason goes here"}}}

In the logged request, the fromUser seems to be 0000000000000001 followed by the server IP address, and the toUser 0000000000000001 followed by some other numbers I don't recognise. The toUser number seems to be the same no matter what extension I dial.

How would I determine what extension number was called in Freeswitch so I can respond with the appropriate "route" response with the url to the application which should handle the call?

I had a look at your sample app here (https://github.com/davehorton/drachtio-sample-webapp) and it looks like the toUser should be the field I want, just not sure how to get the matching number dialled from freeswitch.

davehorton commented 3 years ago

I'm unclear on your scenario and where freeswitch fits into it. Is freeswitch generating an inbound call to the drachtio server?

Reikooters commented 3 years ago

Hi Dave

Thanks for your time. I'll try to explain a bit better. What I want to achieve:

1) Receive incoming calls on freeswitch and have the call routed to an IVR based on the DID. Calls on different DIDs would be handled by different IVR applications. 2) User will interact with the IVRs using voice. Planning to use Google text-to-speech and speech-to-text to achieve this, and possibly Google Dialogflow (also considering Rasa) for intent recognition based on what the caller is saying.

I don't have any SIP trunks configured on Freeswitch yet. Our call centre uses a different phone system currently, but we're looking at using Freeswitch for IVRs due to technical limitations with our current phone system. So for now, I just want to be able to log into Freeswitch with a softphone and call an extension to test an IVR (once the IVRs are developed).

I started out building a regular Javascript Freeswitch application (mod_v8) which worked in a naive way - play an announcement, record audio for x seconds, then send the wav file to google to transcribe it and take action. But I would like to do the transcribing in real time instead to give a better user experience. I couldn't see an easy way to access the call audio and do speech-to-text in real time, which is how I came across Drachtio and your related projects. And as far as google integration with freeswitch goes, it looks like you've already built it.

Apologies if I'm going about this the wrong way or mixed up how your projects work but here's what I've done from the beginning:

1) Installed freeswitch using ansible-role-fsmrf including the google modules. 2) Installed drachtio using ansible-role-drachtio. 3) Created a 4000.xml file in /usr/local/freeswitch/conf/directory/default which is just a copy of 1000.xml with the extension 4000 and a password I chose (so I can log into freeswitch with a softphone using extension 4000). 4) Created an API which takes a request and gives a JSON response as per https://drachtio.org/docs/drachtio-server#request-handlers-section. Currently always returns a reject response for testing, but I will change this to do a database lookup and give an appropriate route response later. By the way, the example JSON responses on that page aren't actually valid JSON, so I'm not sure my response is right yet. 5) Updated /etc/drachtio.conf.xml to uncomment the request-handlers tag, and set the url to the API I created in step 4

Haven't touched any other configuration anywhere apart from above. Once test calls are working I then plan to build IVR applications as per https://drachtio.org/docs/developer-guide/#outbound-connections.

I tried making a call to a random number (5001) from a softphone using extension 4000 (Zoiper softphone) and I see this in the freeswitch logs (I changed server IP to __ServerIP__ and my IP to __MyIP__).

eceaee9c-0dca-11eb-bc27-b523ca158164 Dialplan: sofia/drachtio_mrf/4000@__ServerIP__:5080 Regex (FAIL) [socket] ${sip_user_agent}(Z 5.4.6 rv2.10.10.2) =~ /^drachtio-fsmrf:(.*)$/ break=on-false

Based on this line it doesn't seem to be routing the call to Drachtio. How would I configure freeswitch send the call to drachtio server? Do I need to add a dialplan, if yes what would it look like?

Also - am I understanding the way it works overall correctly (that the call goes from freeswitch to drachtio then is handled by drachtio), or should I be using your freeswitch modules without drachtio?

Full freeswitch log for the test call if its of any use

recv 911 bytes from tcp/[__MyIP__]:63578 at 03:11:17.430169:
------------------------------------------------------------------------
INVITE sip:5001@__ServerIP__:5080;transport=TCP SIP/2.0
Via: SIP/2.0/TCP 192.168.1.105:42573;branch=z9hG4bK-524287-1---ff1fa67e62b458e7;rport
Max-Forwards: 70
Contact: <sip:4000@__MyIP__:42573;transport=TCP>
To: <sip:5001@__ServerIP__:5080>
From: <sip:4000@__ServerIP__:5080;transport=TCP>;tag=57604b00
Call-ID: OZbvIc9Ef48eRmTYKvSp8w..
CSeq: 1 INVITE
Allow: INVITE, ACK, CANCEL, BYE, NOTIFY, REFER, MESSAGE, OPTIONS, INFO, SUBSCRIBE
Content-Type: application/sdp
User-Agent: Z 5.4.6 rv2.10.10.2
Allow-Events: presence, kpml, talk
Content-Length: 336

v=0
o=Z 1602645078438 1 IN IP4 __MyIP__
s=Z
c=IN IP4 __MyIP__
t=0 0
m=audio 8000 RTP/AVP 106 9 98 101 0 8 3
a=rtpmap:106 opus/48000/2
a=fmtp:106 sprop-maxcapturerate=16000; minptime=20; useinbandfec=1
a=rtpmap:98 telephone-event/48000
a=fmtp:98 0-16
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=sendrecv
eceaee9c-0dca-11eb-bc27-b523ca158164 2020-10-14 03:11:17.421192 [NOTICE] switch_channel.c:1118 New Channel sofia/drachtio_mrf/4000@__ServerIP__:5080 [eceaee9c-0dca-11eb-bc27-b523ca158164]
eceaee9c-0dca-11eb-bc27-b523ca158164 2020-10-14 03:11:17.421192 [DEBUG] switch_core_state_machine.c:585 (sofia/drachtio_mrf/4000@__ServerIP__:5080) Running State Change CS_NEW (Cur 1 Tot 1)
eceaee9c-0dca-11eb-bc27-b523ca158164 2020-10-14 03:11:17.421192 [DEBUG] sofia.c:10243 sofia/drachtio_mrf/4000@__ServerIP__:5080 receiving invite from __MyIP__:63578 version: 1.10.1-release git f999022 2019-08-20 16:54:04Z 64bit
eceaee9c-0dca-11eb-bc27-b523ca158164 2020-10-14 03:11:17.421192 [DEBUG] sofia.c:11433 Setting NAT mode based on nat.auto
eceaee9c-0dca-11eb-bc27-b523ca158164 2020-10-14 03:11:17.421192 [DEBUG] sofia.c:7290 Channel sofia/drachtio_mrf/4000@__ServerIP__:5080 entering state [received][100]
eceaee9c-0dca-11eb-bc27-b523ca158164 2020-10-14 03:11:17.421192 [DEBUG] sofia.c:7300 Remote SDP:
eceaee9c-0dca-11eb-bc27-b523ca158164 v=0
eceaee9c-0dca-11eb-bc27-b523ca158164 o=Z 1602645078438 1 IN IP4 __MyIP__
eceaee9c-0dca-11eb-bc27-b523ca158164 s=Z
eceaee9c-0dca-11eb-bc27-b523ca158164 c=IN IP4 __MyIP__
eceaee9c-0dca-11eb-bc27-b523ca158164 t=0 0
eceaee9c-0dca-11eb-bc27-b523ca158164 m=audio 8000 RTP/AVP 106 9 98 101 0 8 3
eceaee9c-0dca-11eb-bc27-b523ca158164 a=rtpmap:106 opus/48000/2
eceaee9c-0dca-11eb-bc27-b523ca158164 a=fmtp:106 sprop-maxcapturerate=16000; minptime=20; useinbandfec=1
eceaee9c-0dca-11eb-bc27-b523ca158164 a=rtpmap:98 telephone-event/48000
eceaee9c-0dca-11eb-bc27-b523ca158164 a=fmtp:98 0-16
eceaee9c-0dca-11eb-bc27-b523ca158164 a=rtpmap:101 telephone-event/8000
eceaee9c-0dca-11eb-bc27-b523ca158164 a=fmtp:101 0-16
eceaee9c-0dca-11eb-bc27-b523ca158164 
eceaee9c-0dca-11eb-bc27-b523ca158164 2020-10-14 03:11:17.421192 [DEBUG] sofia.c:7703 (sofia/drachtio_mrf/4000@__ServerIP__:5080) State Change CS_NEW -> CS_INIT
eceaee9c-0dca-11eb-bc27-b523ca158164 2020-10-14 03:11:17.421192 [DEBUG] switch_core_state_machine.c:604 (sofia/drachtio_mrf/4000@__ServerIP__:5080) State NEW
eceaee9c-0dca-11eb-bc27-b523ca158164 2020-10-14 03:11:17.421192 [DEBUG] switch_core_state_machine.c:585 (sofia/drachtio_mrf/4000@__ServerIP__:5080) Running State Change CS_INIT (Cur 1 Tot 1)
eceaee9c-0dca-11eb-bc27-b523ca158164 2020-10-14 03:11:17.421192 [DEBUG] switch_core_state_machine.c:628 (sofia/drachtio_mrf/4000@__ServerIP__:5080) State INIT
eceaee9c-0dca-11eb-bc27-b523ca158164 2020-10-14 03:11:17.421192 [DEBUG] mod_sofia.c:93 sofia/drachtio_mrf/4000@__ServerIP__:5080 SOFIA INIT
eceaee9c-0dca-11eb-bc27-b523ca158164 2020-10-14 03:11:17.421192 [DEBUG] switch_core_state_machine.c:40 sofia/drachtio_mrf/4000@__ServerIP__:5080 Standard INIT
eceaee9c-0dca-11eb-bc27-b523ca158164 2020-10-14 03:11:17.421192 [DEBUG] switch_core_state_machine.c:48 (sofia/drachtio_mrf/4000@__ServerIP__:5080) State Change CS_INIT -> CS_ROUTING
eceaee9c-0dca-11eb-bc27-b523ca158164 2020-10-14 03:11:17.421192 [DEBUG] switch_core_state_machine.c:628 (sofia/drachtio_mrf/4000@__ServerIP__:5080) State INIT going to sleep
eceaee9c-0dca-11eb-bc27-b523ca158164 2020-10-14 03:11:17.421192 [DEBUG] switch_core_state_machine.c:585 (sofia/drachtio_mrf/4000@__ServerIP__:5080) Running State Change CS_ROUTING (Cur 1 Tot 1)
eceaee9c-0dca-11eb-bc27-b523ca158164 2020-10-14 03:11:17.421192 [DEBUG] switch_channel.c:2332 (sofia/drachtio_mrf/4000@__ServerIP__:5080) Callstate Change DOWN -> RINGING
eceaee9c-0dca-11eb-bc27-b523ca158164 2020-10-14 03:11:17.421192 [DEBUG] switch_core_state_machine.c:644 (sofia/drachtio_mrf/4000@__ServerIP__:5080) State ROUTING
send 334 bytes to tcp/[__MyIP__]:63578 at 03:11:17.432085:
------------------------------------------------------------------------
SIP/2.0 100 Trying
Via: SIP/2.0/TCP 192.168.1.105:42573;branch=z9hG4bK-524287-1---ff1fa67e62b458e7;rport=63578;received=__MyIP__
From: <sip:4000@__ServerIP__:5080;transport=TCP>;tag=57604b00
To: <sip:5001@__ServerIP__:5080>
Call-ID: OZbvIc9Ef48eRmTYKvSp8w..
CSeq: 1 INVITE
User-Agent: drachtio MRF
Content-Length: 0

eceaee9c-0dca-11eb-bc27-b523ca158164 2020-10-14 03:11:17.421192 [DEBUG] mod_sofia.c:154 sofia/drachtio_mrf/4000@__ServerIP__:5080 SOFIA ROUTING
eceaee9c-0dca-11eb-bc27-b523ca158164 2020-10-14 03:11:17.421192 [DEBUG] switch_core_state_machine.c:236 sofia/drachtio_mrf/4000@__ServerIP__:5080 Standard ROUTING
eceaee9c-0dca-11eb-bc27-b523ca158164 2020-10-14 03:11:17.421192 [INFO] mod_dialplan_xml.c:637 Processing 4000 <4000>->5001 in context mrf
eceaee9c-0dca-11eb-bc27-b523ca158164 Dialplan: sofia/drachtio_mrf/4000@__ServerIP__:5080 parsing [mrf->socket] continue=false
eceaee9c-0dca-11eb-bc27-b523ca158164 Dialplan: sofia/drachtio_mrf/4000@__ServerIP__:5080 Regex (FAIL) [socket] ${sip_user_agent}(Z 5.4.6 rv2.10.10.2) =~ /^drachtio-fsmrf:(.*)$/ break=on-false
eceaee9c-0dca-11eb-bc27-b523ca158164 2020-10-14 03:11:17.421192 [INFO] switch_core_state_machine.c:312 No Route, Aborting
eceaee9c-0dca-11eb-bc27-b523ca158164 2020-10-14 03:11:17.421192 [NOTICE] switch_core_state_machine.c:313 Hangup sofia/drachtio_mrf/4000@__ServerIP__:5080 [CS_ROUTING] [NO_ROUTE_DESTINATION]
eceaee9c-0dca-11eb-bc27-b523ca158164 2020-10-14 03:11:17.421192 [DEBUG] switch_core_state_machine.c:644 (sofia/drachtio_mrf/4000@__ServerIP__:5080) State ROUTING going to sleep
eceaee9c-0dca-11eb-bc27-b523ca158164 2020-10-14 03:11:17.421192 [DEBUG] switch_core_state_machine.c:585 (sofia/drachtio_mrf/4000@__ServerIP__:5080) Running State Change CS_HANGUP (Cur 1 Tot 1)
eceaee9c-0dca-11eb-bc27-b523ca158164 2020-10-14 03:11:17.421192 [DEBUG] switch_core_state_machine.c:848 (sofia/drachtio_mrf/4000@__ServerIP__:5080) Callstate Change RINGING -> HANGUP
eceaee9c-0dca-11eb-bc27-b523ca158164 2020-10-14 03:11:17.421192 [DEBUG] switch_core_state_machine.c:850 (sofia/drachtio_mrf/4000@__ServerIP__:5080) State HANGUP
eceaee9c-0dca-11eb-bc27-b523ca158164 2020-10-14 03:11:17.421192 [DEBUG] mod_sofia.c:460 Channel sofia/drachtio_mrf/4000@__ServerIP__:5080 hanging up, cause: NO_ROUTE_DESTINATION
eceaee9c-0dca-11eb-bc27-b523ca158164 2020-10-14 03:11:17.421192 [DEBUG] mod_sofia.c:605 Responding to INVITE with: 404
send 697 bytes to tcp/[__MyIP__]:63578 at 03:11:17.432893:
------------------------------------------------------------------------
SIP/2.0 404 Not Found
Via: SIP/2.0/TCP 192.168.1.105:42573;branch=z9hG4bK-524287-1---ff1fa67e62b458e7;rport=63578;received=__MyIP__
Max-Forwards: 70
From: <sip:4000@__ServerIP__:5080;transport=TCP>;tag=57604b00
To: <sip:5001@__ServerIP__:5080>;tag=c9eBm9FZ6NyKN
Call-ID: OZbvIc9Ef48eRmTYKvSp8w..
CSeq: 1 INVITE
User-Agent: drachtio MRF
Accept: application/sdp
Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, MESSAGE, INFO, UPDATE, REGISTER, REFER, NOTIFY
Supported: path, replaces
Allow-Events: talk, hold, conference, refer
Reason: Q.850;cause=3;text="NO_ROUTE_DESTINATION"
Content-Length: 0
Remote-Party-ID: "5001" <sip:5001@__ServerIP__>;party=calling;privacy=off;screen=no

eceaee9c-0dca-11eb-bc27-b523ca158164 2020-10-14 03:11:17.421192 [DEBUG] switch_core_state_machine.c:60 sofia/drachtio_mrf/4000@__ServerIP__:5080 Standard HANGUP, cause: NO_ROUTE_DESTINATION
eceaee9c-0dca-11eb-bc27-b523ca158164 2020-10-14 03:11:17.421192 [DEBUG] switch_core_state_machine.c:850 (sofia/drachtio_mrf/4000@__ServerIP__:5080) State HANGUP going to sleep
eceaee9c-0dca-11eb-bc27-b523ca158164 2020-10-14 03:11:17.421192 [DEBUG] switch_core_state_machine.c:620 (sofia/drachtio_mrf/4000@__ServerIP__:5080) State Change CS_HANGUP -> CS_REPORTING
eceaee9c-0dca-11eb-bc27-b523ca158164 2020-10-14 03:11:17.421192 [DEBUG] switch_core_state_machine.c:585 (sofia/drachtio_mrf/4000@__ServerIP__:5080) Running State Change CS_REPORTING (Cur 1 Tot 1)
eceaee9c-0dca-11eb-bc27-b523ca158164 2020-10-14 03:11:17.421192 [DEBUG] switch_core_state_machine.c:936 (sofia/drachtio_mrf/4000@__ServerIP__:5080) State REPORTING
eceaee9c-0dca-11eb-bc27-b523ca158164 2020-10-14 03:11:17.421192 [DEBUG] switch_core_state_machine.c:174 sofia/drachtio_mrf/4000@__ServerIP__:5080 Standard REPORTING, cause: NO_ROUTE_DESTINATION
eceaee9c-0dca-11eb-bc27-b523ca158164 2020-10-14 03:11:17.421192 [DEBUG] switch_core_state_machine.c:936 (sofia/drachtio_mrf/4000@__ServerIP__:5080) State REPORTING going to sleep
eceaee9c-0dca-11eb-bc27-b523ca158164 2020-10-14 03:11:17.421192 [DEBUG] switch_core_state_machine.c:611 (sofia/drachtio_mrf/4000@__ServerIP__:5080) State Change CS_REPORTING -> CS_DESTROY
eceaee9c-0dca-11eb-bc27-b523ca158164 2020-10-14 03:11:17.421192 [DEBUG] switch_core_session.c:1726 Session 1 (sofia/drachtio_mrf/4000@__ServerIP__:5080) Locked, Waiting on external entities
eceaee9c-0dca-11eb-bc27-b523ca158164 2020-10-14 03:11:17.421192 [NOTICE] switch_core_session.c:1744 Session 1 (sofia/drachtio_mrf/4000@__ServerIP__:5080) Ended
eceaee9c-0dca-11eb-bc27-b523ca158164 2020-10-14 03:11:17.421192 [NOTICE] switch_core_session.c:1748 Close Channel sofia/drachtio_mrf/4000@__ServerIP__:5080 [CS_DESTROY]
eceaee9c-0dca-11eb-bc27-b523ca158164 2020-10-14 03:11:17.421192 [DEBUG] switch_core_state_machine.c:739 (sofia/drachtio_mrf/4000@__ServerIP__:5080) Running State Change CS_DESTROY (Cur 0 Tot 1)
eceaee9c-0dca-11eb-bc27-b523ca158164 2020-10-14 03:11:17.421192 [DEBUG] switch_core_state_machine.c:749 (sofia/drachtio_mrf/4000@__ServerIP__:5080) State DESTROY
eceaee9c-0dca-11eb-bc27-b523ca158164 2020-10-14 03:11:17.421192 [DEBUG] mod_sofia.c:365 sofia/drachtio_mrf/4000@__ServerIP__:5080 SOFIA DESTROY
eceaee9c-0dca-11eb-bc27-b523ca158164 2020-10-14 03:11:17.421192 [DEBUG] switch_core_state_machine.c:181 sofia/drachtio_mrf/4000@__ServerIP__:5080 Standard DESTROY
eceaee9c-0dca-11eb-bc27-b523ca158164 2020-10-14 03:11:17.421192 [DEBUG] switch_core_state_machine.c:749 (sofia/drachtio_mrf/4000@__ServerIP__:5080) State DESTROY going to sleep
davehorton commented 3 years ago

OK, if you want to use drachtio in this scenario, you would need to do things in a completely different fashion:

So this is a very different way of working with freeswitch, and it may not be for you.