sdesalve / hassio-addons

MIT License
86 stars 21 forks source link

pjsua_app.c SIP TCP transport is disconnected from 67.232.1.13:5060: Connection refused #66

Closed wptracy closed 1 year ago

wptracy commented 1 year ago

The call won't go through.

I think it's because I can't specify a port number in hassio.addon_stdin

If I specify a port, I get no SIP messages.

If I don't specify a port I get a bunch of SIP Invites but the call doesn't go thru because the SIP provider requires port 5008.

pjsua_app.c SIP TCP transport is disconnected from 67.231.2.13:5060: Connection refused

Here is the SIP INVITE message, my App configuration, hassio.addon_stdin, and log file

If I send a call_sip_uri: without a port, I see SIP messages.
service: hassio.addon_stdin
data:
  addon: 89275b70_dss_voip
  input:
    call_sip_uri: sip:13039339035@sip.provider.com
    message_tts: Write here your message

If I send a call_sip_uri: with a port, I don't see SIP messages.
service: hassio.addon_stdin
data:
  addon: 89275b70_dss_voip
  input:
    call_sip_uri: 'sip:13039339035@sip.provider.com:5008'
    message_tts: Write here your message

Here is my configuration file:
caller_id_uri: sip:user@sip.provider.com:5008
realm: "*"
username: "user"
password: 'password'
pjsua_custom_options: "--no-tcp"

The app doesn't send the required port on the URL, but if I put the credentials and sip provider in my IP phone, it does send the port.

dss_voip App's Invite message:

INVITE sip:13039339035@sip.provider.com SIP/2.0
Via: SIP/2.0/UDP 172.30.33.5:5060;rport;branch=z9hG4bKPjIgp4xPwpn4rxNKnkwiv1rVMFbq9z-2EL
Max-Forwards: 70
From: sip:username@sip.provider.com;tag=YaZG4I-UzV0d6B1fKm5-oEDOobVElWOd
To: sip:13039339035@sip.provider.com
Contact: <sip:username@172.30.33.5:5060;ob>
Call-ID: VPE8OhPfU7EVOTiLG8s1aau0S9vm6UHd
CSeq: 15221 INVITE
Allow: PRACK, INVITE, ACK, BYE, CANCEL, UPDATE, INFO, SUBSCRIBE, NOTIFY, REFER, MESSAGE, OPTIONS
Supported: replaces, 100rel, timer, norefersub
Session-Expires: 1800
Min-SE: 90
User-Agent: PJSUA v2.11.1 Linux-5.15.76/aarch64
Content-Type: application/sdp
Content-Length:   626

My SNOM IP phone User-Agent Invite message.

INVITE [sip:3039339035@sip.provider.com:5008;user=phone](mailto:sip:3039339035@sip.provider.com:5008;user=phone) SIP/2.0
Via: SIP/2.0/UDP 98.43.186.186:3073;branch=z9hG4bK-8e128z6h7a0e;rport
From: "HomeAssistant.sip.provider.com" [<sip:6859810135@sip.provider.com:5008>](mailto:sip:6859810135@sip.provider.com:5008);tag=t2hjnib6bj
To: [<sip:3039339035@sip.provider.com:5008;user=phone>](mailto:sip:3039339035@sip.provider.com:5008;user=phone)
Call-ID: 313637343835303434303338373138-9y7dzebfqzq2
CSeq: 1 INVITE
Max-Forwards: 70
User-Agent: snom821/8.7.5.35
Contact: [<sip:6859810135@98.43.186.186:3073;line=1t35fiwd>](mailto:sip:6859810135@98.43.186.186:3073;line=1t35fiwd);reg-id=1
X-Serialnumber: 00041348D068
P-Key-Flags: resolution="31x13", keys="4"
Accept: application/sdp
Allow: INVITE, ACK, CANCEL, BYE, REFER, OPTIONS, NOTIFY, SUBSCRIBE, PRACK, MESSAGE, INFO, UPDATE
Allow-Events: talk, hold, refer, call-info
Supported: timer, 100rel, replaces, from-change
Session-Expires: 3600
Min-SE: 90
Content-Type: application/sdp
Content-Length: 516

LOG File:
[Info] Listening for messages via stdin service call...
[Info] Received messages {"call_sip_uri":"sip:13039339035@sip.provider.com","message_tts":"Write here your message"}
Converting audio file 'http://10.0.0.233:8123/api/tts_proxy/3bb4cd06a7898fc0a33665f241cb48f2f2a192ac_en_-_google_translate.mp3'...
Audio succesfully converted...
Starting SIP Client and calling 'sip:13039339035@sip.provider.com'...
This call will be terminated after '50' seconds.
14:59:50.905         os_core_unix.c !pjlib 2.11.1 for POSIX initialized
14:59:50.906         sip_endpoint.c  .Creating endpoint instance...
14:59:50.907                  pjlib  .select() I/O Queue created (0x7f9ef4b100)
14:59:50.907         sip_endpoint.c  .Module "mod-msg-print" registered
14:59:50.907        sip_transport.c  .Transport manager created.
14:59:50.907           pjsua_core.c  .PJSUA state changed: NULL --> CREATED
14:59:50.931           pjsua_core.c  .pjsua version 2.11.1 for Linux-5.15.76/aarch64 initialized
14:59:50.940            pjsua_app.c  .Turning sound device -99 -99 ON
14:59:50.940                 main.c  Ready: Success
14:59:50.944            pjsua_app.c  .......Call 0 state changed to CALLING
>>>>
Account list:
  [ 0] <sip:172.30.33.5:5060>: does not register
       Online status: Online
  [ 1] <sip:172.30.33.5:5060;transport=TCP>: does not register
       Online status: Online
 *[ 2] sip:6859810135@sip.provider.com:5008: does not register
       Online status: Online
Buddy list:
 [ 1] <?>  sip:13039339035@sip.provider.com
+=============================================================================+
|       Call Commands:         |   Buddy, IM & Presence:  |     Account:      |
|                              |                          |                   |
|  m  Make new call            | +b  Add new buddy       .| +a  Add new accnt |
|  M  Make multiple calls      | -b  Delete buddy         | -a  Delete accnt. |
|  a  Answer call              |  i  Send IM              | !a  Modify accnt. |
|  h  Hangup call  (ha=all)    |  s  Subscribe presence   | rr  (Re-)register |
|  H  Hold call                |  u  Unsubscribe presence | ru  Unregister    |
|  v  re-inVite (release hold) |  t  ToGgle Online status |  >  Cycle next ac.|
|  U  send UPDATE              |  T  Set online status    |  <  Cycle prev ac.|
| ],[ Select next/prev call    +--------------------------+-------------------+
|  x  Xfer call                |      Media Commands:     |  Status & Config: |
|  X  Xfer with Replaces       |                          |                   |
|  #  Send RFC 2833 DTMF       | cl  List ports           |  d  Dump status   |
|  *  Send DTMF with INFO      | cc  Connect port         | dd  Dump detailed |
| dq  Dump curr. call quality  | cd  Disconnect port      | dc  Dump config   |
|                              |  V  Adjust audio Volume  |  f  Save config   |
|  S  Send arbitrary REQUEST   | Cp  Codec priorities     |                   |
+-----------------------------------------------------------------------------+
|  q  QUIT   L  ReLoad   sleep MS   echo [0|1|txt]     n: detect NAT type     |
+=============================================================================+
You have 1 active call
Current call id=0 to sip:13039339035@sip.provider.com [CALLING]
>>> 14:59:50.991       tcpc0x7f9e1d0518 !TCP connect() error: [code=120111]: Connection refused
14:59:50.991        tsx0x7f9e1e3c18  Temporary failure in sending Request msg INVITE/cseq=19575 (tdta0x7f9e1dbaa8), will try next server: Connection refused
14:59:50.992            pjsua_app.c  SIP TCP transport is disconnected from 67.231.2.13:5060: Connection refused [status=120111]
14:59:51.049       tcpc0x7f9e1ce528  TCP connect() error: [code=120111]: Connection refused
14:59:51.049        tsx0x7f9e1e3c18  Temporary failure in sending Request msg INVITE/cseq=19575 (tdta0x7f9e1dbaa8), will try next server: Connection refused
14:59:51.049            pjsua_app.c  SIP TCP transport is disconnected from 216.82.238.135:5060: Connection refused [status=120111]
14:59:51.941            pjsua_app.c  .Turning sound device -99 -99 OFF
15:00:23.049            pjsua_app.c  ....Call 0 is DISCONNECTED [reason=408 (Request Timeout)]
No current call
>>> 15:00:42.442                timer.c  .Dumping timer heap:
15:00:42.442                timer.c  .  Cur size: 0 entries, max: 3070
[Info] Call ended...
[Info] Listening for messages via stdin service call...
sdesalve commented 1 year ago

https://www.pjsip.org/pjsua.htm

This is pjSua manual page.

Try to use --local-port=port

wptracy commented 1 year ago

Like this? pjsua_custom_options: "--no-tcp --local-port=5008"


caller_id_uri: sip:user@sip.provider.com:5008
realm: sip.provider.com
username: "user"
password: 'password'
pjsua_custom_options: "--no-tcp --local-port=5008"

service: hassio.addon_stdin
data:
  addon: 89275b70_dss_voip
  input:
    call_sip_uri: 'sip:13039339035@sip.provider.com:5008'
    message_tts: Write here your message 

The first time I tried it, it broke a pipe and dumped a core. And no SIP messages generated.

[Info] Received messages {"call_sip_uri":"sip:13039339035@sip.provider.com:5008","message_tts":"Write here your message"}
Converting audio file 'http://10.0.0.233:8123/api/tts_proxy/3bb4cd06a7898fc0a33665f241cb48f2f2a192ac_en_-_google_translate.mp3'...
Audio succesfully converted...
Starting SIP Client and calling 'sip:13039339035@sip.provider.com:5008'...
This call will be terminated after '50' seconds.
00:32:08.370         os_core_unix.c !pjlib 2.11.1 for POSIX initialized
./run: line 337: echo: write error: Broken pipe
./run: line 337: echo: write error: Broken pipe
./run: line 337:   504 Exit 1                  ( sleep $MAX_CALL_TIME_VALUE; echo h; sleep 0.5; echo q )
       505 Segmentation fault      (core dumped) | ( pjsua --app-log-level=3 --config-file '/share/dss_voip/dss_pjsua.conf' $CALL_SIP_URI_VALUE 2> /share/dss_voip/dss_pjsua.log )
[Error] pjsua Exit code: 139
[Info] Call ended...

The second time I tried it, it DISCONNECTED [reason=408 (Request Timeout)]. And no SIP messages.

[Info] Received messages {"call_sip_uri":"sip:13039339035@sip.provider.com:5008","message_tts":"Write here your message"}
Converting audio file 'http://10.0.0.233:8123/api/tts_proxy/3bb4cd06a7898fc0a33665f241cb48f2f2a192ac_en_-_google_translate.mp3'...
Audio succesfully converted...
Starting SIP Client and calling 'sip:13039339035@sip.provider.com:5008'...
This call will be terminated after '50' seconds.
00:34:16.469         os_core_unix.c !pjlib 2.11.1 for POSIX initialized
00:34:16.471         sip_endpoint.c  .Creating endpoint instance...
00:34:16.471                  pjlib  .select() I/O Queue created (0x7f9e1eb100)
00:34:16.471         sip_endpoint.c  .Module "mod-msg-print" registered
00:34:16.471        sip_transport.c  .Transport manager created.
00:34:16.471           pjsua_core.c  .PJSUA state changed: NULL --> CREATED
00:34:16.494           pjsua_core.c  .pjsua version 2.11.1 for Linux-5.15.76/aarch64 initialized
00:34:16.501            pjsua_app.c  .Turning sound device -99 -99 ON
00:34:16.501                 main.c  Ready: Success
00:34:16.578            pjsua_app.c  .......Call 0 state changed to CALLING
>>>>
Account list:
  [ 0] <sip:172.30.33.5:5060>: does not register
       Online status: Online
  [ 1] <sip:172.30.33.5:5060;transport=TCP>: does not register
       Online status: Online
 *[ 2] sip:user@sip.provider.com:5008: does not register
       Online status: Online
Buddy list:
 [ 1] <?>  sip:13039339035@sip.provider.com:5008
+=============================================================================+
|       Call Commands:         |   Buddy, IM & Presence:  |     Account:      |
|                              |                          |                   |
|  m  Make new call            | +b  Add new buddy       .| +a  Add new accnt |
|  M  Make multiple calls      | -b  Delete buddy         | -a  Delete accnt. |
|  a  Answer call              |  i  Send IM              | !a  Modify accnt. |
|  h  Hangup call  (ha=all)    |  s  Subscribe presence   | rr  (Re-)register |
|  H  Hold call                |  u  Unsubscribe presence | ru  Unregister    |
|  v  re-inVite (release hold) |  t  ToGgle Online status |  >  Cycle next ac.|
|  U  send UPDATE              |  T  Set online status    |  <  Cycle prev ac.|
| ],[ Select next/prev call    +--------------------------+-------------------+
|  x  Xfer call                |      Media Commands:     |  Status & Config: |
|  X  Xfer with Replaces       |                          |                   |
|  #  Send RFC 2833 DTMF       | cl  List ports           |  d  Dump status   |
|  *  Send DTMF with INFO      | cc  Connect port         | dd  Dump detailed |
| dq  Dump curr. call quality  | cd  Disconnect port      | dc  Dump config   |
|                              |  V  Adjust audio Volume  |  f  Save config   |
|  S  Send arbitrary REQUEST   | Cp  Codec priorities     |                   |
+-----------------------------------------------------------------------------+
|  q  QUIT   L  ReLoad   sleep MS   echo [0|1|txt]     n: detect NAT type     |
+=============================================================================+
You have 1 active call
Current call id=0 to sip:13039339035@sip.provider.com:5008 [CALLING]
>>> 00:34:17.501            pjsua_app.c  .Turning sound device -99 -99 OFF
00:34:48.579            pjsua_app.c  ....Call 0 is DISCONNECTED [reason=408 (Request Timeout)]
No current call
>>> 00:35:08.007                timer.c  .Dumping timer heap:
00:35:08.007                timer.c  .  Cur size: 0 entries, max: 3070
[Info] Call ended...
[Info] Listening for messages via stdin service call...
sdesalve commented 1 year ago

If you use --local-port=5008, please remove port from sip.provider.com:5008

try to install in hassio ssh shell pjsip and place a call:

you need to install pjsua

apk add --no-cache pjsua

and to place the call run

pjsua --app-log-level=3 --config-file '/share/dss_voip/dss_pjsua.conf' 'sip:xxxxxxxxx@sip.provider.com'

or place a call from interactive prompts with pjsua

Have you tried another Voip provider? if you use pbxes.com could place calls between 2 extension for free. 1 internal will be Hassio and another one could be another sip client on you phone/computer

wptracy commented 1 year ago

I'm definitely going to look into the free pbxes.com option.

But first...

On my SNOM IP phone I discovered that if I disable RTP Encryption, the call goes thru. It was a lot of googling and knowing that I got a "SIP/2.0 488 Not Acceptable Here" when I made a call.

RTP Encryption: off

With this in mind, I followed your instructions.

I removed port 5008 from sip.provider.com:5008 in Configuration.

I installed apk add --no-cache pjsua and tried your command line: pjsua --app-log-level=3 --config-file '/share/dss_voip/dss_pjsua.conf' 'sip:xxxxxxxxx@sip.provider.com'

[core-ssh dss_voip]$ cat dss_pjsua.conf --null-audio --auto-play --play-file /share/dss_voip/dss_message_tts.wav --id sip:user@sip.provider.com --realm * --username user --password password --duration 50

[core-ssh dss_voip]$

I tried: pjsua --app-log-level=3 --config-file '/share/dss_voip/dss_pjsua.conf' 'sip:user@sip.provider.com'

And it didn't work.

So I tried: pjsua --app-log-level=3 --config-file '/share/dss_voip/dss_pjsua.conf' 'sip:3039339035@sip.provider.com'

And it didn't work.

So I tried: pjsua --app-log-level=3 --config-file '/share/dss_voip/dss_pjsua.conf' 'sip:3039339035@sip.provider.com:5008'

And it didn't work.

So I tried: pjsua --app-log-level=4 --no-tcp --local-port=5008 --config-file '/share/dss_voip/dss_pjsua.conf' 'sip:3039339035@sip.provider.com:5008'

And the robot call went thru. I got the message on my phone. It worked!!!!!

I notice that in the man page for pjsip (https://www.pjsip.org/pjsua.htm#cmdline) that Secure RTP is disabled by default.

--use-srtp=N Control SRTP usage for this account. N=0: disabled, N=1: use optional disposition for SRTP in SDP, N=2: require SRTP for all calls for this account. Default is 0.

So I tried: pjsua --app-log-level=4 --no-tcp --local-port=5008 --use-srtp=1 --config-file '/share/dss_voip/dss_pjsua.conf' 'sip:3039339035@sip.provider.com:5008'

And the call does not go thru because encryption is enabled.

I tried various configurations in the User Interface GUI App to make it work like the CLI pjsua command and could not get it to work. I'm thinking the User App ignores port input if provided and forces default port 5060 if no port is provided. The SIP provider won't accept the INVITE if the proper port is not specified.

The GUI is not working like the CLI.

sdesalve commented 1 year ago

For gui you mean my addon?

My addon it's only a bash script that call pjSua bin.

Could you check on addon logs and within pjSua output in the Shell if version of pjSua it's the same?

With same options in addon config and shell, should work both times...

wptracy commented 1 year ago

I can't make the add-on options work like pjsua

caller_id_uri: sip:user@sip.provider.com
realm: "*"
username: "user"
password: 'password'
pjsua_custom_options: "--no-tcp --local-port=5008 --use-srtp=0"

service: hassio.addon_stdin
data:
  addon: 89275b70_dss_voip
  input:
    call_sip_uri: 'sip:3039339035@sip.provider.com:5008'
    message_tts: Write here your message 

Yes, by GUI I meant your SDeSalve Hass.io Add-ons: DSS VoIP Notifier

Add-on version is 4.0.0 pjsua won't tell me it's version. (see logging below) and pjsua --version doesn't work. But when I installed it, it said Installing pjsua (2.12.1-r0) I've attached a screenshot of the installation

Thank you very much for the pjsua and pbxes.com training. pjsua is a nice tool.

I haven't read about pbxes yet. I'm wondering how it will send robot messages if it doesn't have a PSTN gateway. I may be asking for help.

"use pbxes.com could place calls between 2 extension for free. 1 internal will be Hassio and another one could be another sip client on you phone/computer"

Screenshot attached. I can't figure out how to copy/paste from HomeAssistant Terminal window.

[core-ssh dss_voip]$ pjSua -v
-bash: pjSua: command not found
[core-ssh dss_voip]$ pjsua -h
06:07:57.162     pjsua_app_config.c !Argument "-h" is not valid. Use --help to see help
[core-ssh dss_voip]$ pjsua --help
Usage:
  pjsua [options] [SIP URL to call]

General options:
  --config-file=file  Read the config/arguments from file.
  --help              Display this help screen
  --version           Display version info

Logging options:
  --log-file=fname    Log to filename (default stderr)
  --log-level=N       Set log max level to N (0(none) to 6(trace)) (default=5)
  --app-log-level=N   Set log max level for stdout display (default=4)
  --log-append        Append instead of overwrite existing log file.

  --color             Use colorful logging (default yes on Win32)
  --no-color          Disable colorful logging
  --light-bg          Use dark colors for light background (default is dark bg)
  --no-stderr         Disable stderr

SIP Account options:
  --registrar=url     Set the URL of registrar server
  --id=url            Set the URL of local ID (used in From header)
  --realm=string      Set realm
  --username=string   Set authentication username
  --password=string   Set authentication password
  --contact=url       Optionally override the Contact information
  --contact-params=S  Append the specified parameters S in Contact header
  --contact-uri-params=S  Append the specified parameters S in Contact URI
  --proxy=url         Optional URL of proxy server to visit
                      May be specified multiple times
  --reg-timeout=SEC   Optional registration interval (default 300)
  --rereg-delay=SEC   Optional auto retry registration interval (default 300)
  --reg-use-proxy=N   Control the use of proxy settings in REGISTER.
                      0=no proxy, 1=outbound only, 2=acc only, 3=all (default)
  --publish           Send presence PUBLISH for this account
  --mwi               Subscribe to message summary/waiting indication
  --use-ims           Enable 3GPP/IMS related settings on this account
  --use-srtp=N        Use SRTP?  0:disabled, 1:optional, 2:mandatory,
                      3:optional by duplicating media offer (def:0)
  --srtp-secure=N     SRTP require secure SIP? 0:no, 1:tls, 2:sips (def:1)
  --use-100rel        Require reliable provisional response (100rel)
  --use-timer=N       Use SIP session timers? (default=1)
                      0:inactive, 1:optional, 2:mandatory, 3:always
  --timer-se=N        Session timers expiration period, in secs (def:1800)
  --timer-min-se=N    Session timers minimum expiration period, in secs (def:90)
  --outb-rid=string   Set SIP outbound reg-id (default:1)
  --auto-update-nat=N Where N is 0 or 1 to enable/disable SIP traversal behind
                      symmetric NAT (default 1)
  --disable-stun      Disable STUN for this account
  --next-cred         Add another credentials

SIP Account Control:
  --next-account      Add more account

Transport Options:
  --set-qos           Enable QoS tagging for SIP and media.
  --local-port=port   Set TCP/UDP port. This implicitly enables both 
                      TCP and UDP transports on the specified port, unless
                      if TCP or UDP is disabled.
  --ip-addr=IP        Use the specifed address as SIP and RTP addresses.
                      (Hint: the IP may be the public IP of the NAT/router)
  --bound-addr=IP     Bind transports to this IP interface
  --no-tcp            Disable TCP transport.
  --no-udp            Disable UDP transport.
  --nameserver=NS     Add the specified nameserver to enable SRV resolution
                      This option can be specified multiple times.
  --outbound=url      Set the URL of global outbound proxy server
                      May be specified multiple times
  --stun-srv=FORMAT   Set STUN server host or domain. This option may be
                      specified more than once. FORMAT is hostdom[:PORT]

TLS Options:
  --use-tls           Enable TLS transport (default=no)
  --tls-ca-file       Specify TLS CA file (default=none)
  --tls-cert-file     Specify TLS certificate file (default=none)
  --tls-privkey-file  Specify TLS private key file (default=none)
  --tls-password      Specify TLS password to private key file (default=none)
  --tls-verify-server Verify server's certificate (default=no)
  --tls-verify-client Verify client's certificate (default=no)
  --tls-neg-timeout   Specify TLS negotiation timeout (default=no)
  --tls-cipher        Specify prefered TLS cipher (optional).
                      May be specified multiple times

Audio Options:
  --add-codec=name    Manually add codec (default is to enable all)
  --dis-codec=name    Disable codec (can be specified multiple times)
  --clock-rate=N      Override conference bridge clock rate
  --snd-clock-rate=N  Override sound device clock rate
  --stereo            Audio device and conference bridge opened in stereo mode
  --null-audio        Use NULL audio device
  --play-file=file    Register WAV file in conference bridge.
                      This can be specified multiple times.
  --play-tone=FORMAT  Register tone to the conference bridge.
                      FORMAT is 'F1,F2,ON,OFF', where F1,F2 are
                      frequencies, and ON,OFF=on/off duration in msec.
                      This can be specified multiple times.
  --auto-play         Automatically play the file (to incoming calls only)
  --auto-play-hangup  Automatically hangup the file after file play completes
  --auto-loop         Automatically loop incoming RTP to outgoing RTP
  --auto-conf         Automatically put calls in conference with others
  --rec-file=file     Open file recorder (extension can be .wav or .mp3
  --auto-rec          Automatically record conversation
  --quality=N         Specify media quality (0-10, default=8)
  --ptime=MSEC        Override codec ptime to MSEC (default=specific)
  --no-vad            Disable VAD/silence detector (default=vad enabled)
  --ec-tail=MSEC      Set echo canceller tail length (default=200)
  --ec-opt=OPT        Select echo canceller algorithm (0=default, 
                        1=speex, 2=suppressor, 3=WebRtc, 4=WebRtc AEC3)
  --ilbc-mode=MODE    Set iLBC codec mode (20 or 30, default is 30)
  --capture-dev=id    Audio capture device ID (default=-1)
  --playback-dev=id   Audio playback device ID (default=-1)
  --capture-lat=N     Audio capture latency, in ms (default=100)
  --playback-lat=N    Audio playback latency, in ms (default=140)
  --snd-auto-close=N  Auto close audio device when idle for N secs (default=1)
                      Specify N=-1 to disable this feature.
                      Specify N=0 for instant close when unused.
  --no-tones          Disable audible tones
  --jb-max-size       Specify jitter buffer maximum size, in frames (default=-1)
  --extra-audio       Add one more audio stream

Media Transport Options:
  --use-ice           Enable ICE (default:no)
  --ice-regular       Use ICE regular nomination (default: aggressive)
  --ice-trickle=N     Use trickle ICE? 0:disabled, 1:half, 2:full (default=0)
  --ice-max-hosts=N   Set maximum number of ICE host candidates
  --ice-no-rtcp       Disable RTCP component in ICE (default: no)
  --rtp-port=N        Base port to try for RTP (default=4000)
  --rx-drop-pct=PCT   Drop PCT percent of RX RTP (for pkt lost sim, default: 0)
  --tx-drop-pct=PCT   Drop PCT percent of TX RTP (for pkt lost sim, default: 0)
  --use-turn          Enable TURN relay with ICE (default:no)
  --turn-srv          Domain or host name of TURN server ("NAME:PORT" format)
  --turn-tcp          Use TCP connection to TURN server (default no)
  --turn-user         TURN username
  --turn-passwd       TURN password
  --rtcp-mux          Enable RTP & RTCP multiplexing (default: no)
  --srtp-keying       SRTP keying method for outgoing SDP offer.
                      0=SDES (default), 1=DTLS

TURN TLS Options:
  --turn-tls          Use TLS connection to TURN server (default no)
  --turn-tls-ca-file  Specify TURN TLS CA file (default=none)
  --turn-tls-cert-file  Specify TURN TLS certificate file (default=none)
  --turn-tls-privkey-file  Specify TURN TLS private key file (default=none)
  --turn-tls-privkey-pwd Specify TURN TLS password to private key file (default=none)
  --turn-tls-neg-timeout Specify TURN TLS negotiation timeout (default=no)
  --turn-tls-cipher   Specify prefered TURN TLS cipher (optional).
                      May be specified multiple times

Buddy List (can be more than one):
  --add-buddy url     Add the specified URL to the buddy list.

User Agent options:
  --auto-answer=code  Automatically answer incoming calls with code (e.g. 200)
  --max-calls=N       Maximum number of concurrent calls (default:4, max:255)
  --thread-cnt=N      Number of worker threads (default:1)
  --duration=SEC      Set maximum call duration (default:no limit)
  --norefersub        Suppress event subscription when transferring calls
  --use-compact-form  Minimize SIP message size
  --no-force-lr       Allow strict-route to be used (i.e. do not force lr)
  --accept-redirect=N Specify how to handle call redirect (3xx) response.
                      0: reject, 1: follow automatically,
                      2: follow + replace To header (default), 3: ask

CLI options:
  --use-cli           Use CLI as user interface
  --cli-telnet-port=N CLI telnet port
  --no-cli-console    Disable CLI console

When URL is specified, pjsua will immediately initiate call to that URL

[core-ssh dss_voip]$ pjsua --version

[s6-init] making user provided files available at /var/run/s6/etc...exited 0.
[s6-init] ensuring user provided files have correct perms...exited 0.
[fix-attrs.d] applying ownership & permissions fixes...
[fix-attrs.d] done.
[cont-init.d] executing container initialization scripts...
[cont-init.d] 00-banner.sh: executing... 
-----------------------------------------------------------
 Add-on: DSS VoIP Notifier
 VoIP Notifier for Home Assistant
-----------------------------------------------------------
 Add-on version: 4.0.0
 You are running the latest version of this add-on.
 System: Home Assistant OS 9.4  (aarch64 / raspberrypi4-64)
 Home Assistant Core: 2023.1.7
 Home Assistant Supervisor: 2023.01.1
-----------------------------------------------------------
 Please, share the above information when looking for help
 or support in, e.g., GitHub, forums or the Discord chat.
-----------------------------------------------------------
[cont-init.d] 00-banner.sh: exited 0.
[cont-init.d] 01-log-level.sh: executing... 
[cont-init.d] 01-log-level.sh: exited 0.
[cont-init.d] done.
[services.d] starting services
[services.d] done.
[Info] Starting addon...

Screenshot from 2023-01-28 06-14-36

sdesalve commented 1 year ago

Addon options are not recognised. Check indentation 😉

wptracy commented 1 year ago

Thanks, I'll work with indentations.

I went to pbxes.com and see the free account, but on the Free Account application it has this comment:

Since January 2018 there is a $15 one-time fee for account creation. Please see our news forum for details.

It's worth $15 if I can make this work.

If I open the free account will I be able to create my own PBX extension?

I can see how, having a PBX extension on my mobile phone voip app can receive a call from a cloud pbx.

In your example of URL: "sip:+393334455667@pbxes.com

wptracy commented 1 year ago

This makes no sense to me. I copy pasted your example in the Configuration and it complains the same as if I use my sip.provider.com settings. It fails the check configuration test for yaml.

I don't know what the hierarchy is.

But if I make all the indentations the same, it passes.

sip_parameters:
  caller_id_uri: 'sip:extension@domain.3cx.com.au'
  realm: '*'
  username: 'AuthenticationID'
  password: 'AuthenticationPassword'
pjsua_custom_options: '-–no-tcp'

Failed to save add-on configuration, Missing option 'caller_id_uri' in sip_parameters in DSS VoIP Notifier (89275b70_dss_voip). Got {'sip_parameters': {'sip_parameters': {'caller_id_uri': 'sip:extension@domain.3cx.com.au', 'realm': '*', 'username': 'AuthenticationID', 'password': 'AuthenticationPassword'}, 'pjsua_custom_options': '-–no-tcp'}}

sip_parameters:
  caller_id_uri: 'sip:extension@domain.3cx.com.au'
  realm: '*'
  username: 'AuthenticationID'
  password: 'AuthenticationPassword'
    pjsua_custom_options: '-–no-tcp'
Failed to save add-on configuration, not a valid value for dictionary value @ data['options']. Got {}

sip_parameters:
  caller_id_uri: 'sip:extension@domain.3cx.com.au'
  realm: '*'
  username: 'AuthenticationID'
  password: 'AuthenticationPassword'
    pjsua_custom_options: '-–no-tcp'
Failed to save add-on configuration, not a valid value for dictionary value @ data['options']. Got {}

The following indentation passes the test:
sip_parameters:
caller_id_uri: 'sip:extension@domain.3cx.com.au'
realm: '*'
username: 'AuthenticationID'
password: 'AuthenticationPassword'
pjsua_custom_options: '-–no-tcp'

I don't know what to do to satisfy yaml and include the options.

sdesalve commented 1 year ago

Screenshot_2023-01-28-16-50-39-760_io homeassistant companion android~2

sdesalve commented 1 year ago

Screenshot_2023-01-28-16-50-29-577_io homeassistant companion android~2

wptracy commented 1 year ago

Now it works with the add-on. Thanks.

Although, the final yaml appears to look the same whether I paste it in or let the User Interface do it,

I have to switch on the "Show unused optional configuration options" which switches on the UI and then I enter the options in order to have it accepted.

Who would have known this?

Now I see PJSUA_CUSTOM_OPTIONS = '--no-tcp --local-port=5008' in the logs and it works like you say, the same as CLI.

[s6-init] making user provided files available at /var/run/s6/etc...exited 0.
[s6-init] ensuring user provided files have correct perms...exited 0.
[fix-attrs.d] applying ownership & permissions fixes...
[fix-attrs.d] done.
[cont-init.d] executing container initialization scripts...
[cont-init.d] 00-banner.sh: executing... 
-----------------------------------------------------------
 Add-on: DSS VoIP Notifier
 VoIP Notifier for Home Assistant
-----------------------------------------------------------
 Add-on version: 4.0.0
 You are running the latest version of this add-on.
 System: Home Assistant OS 9.4  (aarch64 / raspberrypi4-64)
 Home Assistant Core: 2023.1.7
 Home Assistant Supervisor: 2023.01.1
-----------------------------------------------------------
 Please, share the above information when looking for help
 or support in, e.g., GitHub, forums or the Discord chat.
-----------------------------------------------------------
[cont-init.d] 00-banner.sh: exited 0.
[cont-init.d] 01-log-level.sh: executing... 
[cont-init.d] 01-log-level.sh: exited 0.
[cont-init.d] done.
[services.d] starting services
[services.d] done.
[Info] Starting addon...
PJSUA_CUSTOM_OPTIONS = '--no-tcp --local-port=5008'
[Info] Listening for messages via stdin service call...
wptracy commented 1 year ago

One last question.

If I open the free account at pbxes.com will I be able to create my own PBX extension?

And, please close these two tickets.

I like your SDeSalve Hass.io Add-ons: DSS VoIP Notifier.

There is something wrong with your BuyMeaCoffee account. I've tried four times to send something. I don't know if it's your account that's the problem or not. I called my bank. They say I don't have a problem.

The provided key 'sk_live_RH****90fx' does not have access to account 'acct_19eWWsGv5l9qRdab' (or that account does not exist). Application access may have been revoked.

sdesalve commented 1 year ago

Who would have known this?

On Hassio's latest releases developers had switched from yaml to json config and introduced that option... You don't had posted before your addon full config and I've not thinked a that eventuality. Damns!

If I open the free account at pbxes.com will I be able to create my own PBX extension?

Yes! It's a PBX. You can add multiple Voip providers (trunks), setting outbound call strategy (outboud route), many extension and group ringing! (ex: you call your extension group and many phone will ring simoltaunesly) It's beautiful!

The provided key 'sk_live_RH****90fx' does not have access to account 'acct_19eWWsGv5l9qRdab' (or that account does not exist). Application access may have been revoked.

Sorry, I've had to disable Stripe and BuyMeACofee, Please use Paypal if you want to give me some gift. Thanks!

wptracy commented 1 year ago

I added an extension in pbxes.com and configured my sip client on my iphone. It appears to be registered.

I configured DSS VoIP Notifier and started it. Then I sent the hassio.addon_stdin service message in Developer tools. It didn't work. So I tried the CLI command: pjsua --app-log-level=4 --config-file '/share/dss_voip/dss_pjsua.conf' 'sip:wptracy-13039339035@pbxes.com'

It didn't ring my phone, but I got a nice debug trace.

I don't know what I'm doing wrong, again.

service: hassio.addon_stdin data: addon: 89275b70_dss_voip input: call_sip_uri:sip:wptracy-13039339035@pbxes.com message_tts: Write here your message

sdesalve commented 1 year ago

"sip_parameters": { "sip_server_uri": "sip:www3.pbxes.com:36999", "caller_id_uri": "sip:xxxxxxxx-510@pbxes.com", "realm": "*", "username": "xxxxxxxx-510", "password": "xxxxxxxx"

Have you setup pbxex

Have you tried with 2 sip phone clients?

wptracy commented 1 year ago

No, I only created wptracy-3039339035. But now I think it's a user. I created two extensions: SIP Extension: 13039339035 SIP Extension: 13033305341

The same SIP number can be registered on two phones at the same time can't it? And ring both phones at the same time.

For some reason I have both numbers registered on my Soft phone app and only one of the numbers will register on my SNOM desk IP phone.

Is the left curly bracket supposed to be there "sip_parameters": {

Now I get what's going on. one is the phone number of HomeAssistant and it's calling the number of my iPhone. But you already told me that. I'm a little slow, sorry.

when I send the call with jpjsua it complains about SIP/2.0 407 Proxy Authentication Required. I guess that's why the call isn't going thru. I'll look for an option.

and how do I send you money with paypal. I've never done that before. It looks like you closed down buymecoffee. now it goes to 404 doesn't exist.

sdesalve commented 1 year ago

You need to create 2 extension

Ex 100 and 101

Then your extension will be

Username-100@pbxes.com and Username-101@pbxes.com

The same SIP number can be registered on two phones at the same time

No. 1 extension for each phone

Search some pbxes guides on Google. It's pretty simple to use that PBX

Is the left curly bracket supposed to be there "sip_parameters": {

It's old notation. For your reference only. Remove bracket

and how do I send you money with paypal. I've never done that before.

Click on donate button and you'll redirected to PayPal. You can donate with your Paypal account or your credit card if you want

It looks like you closed down buymecoffee. now it goes to 404 doesn't exist.

Buymacoffee use Stripe to send me money. Stripe now want to know details about my company and apply calculation for VAT. I've used Stripe only for this donations, so I've preferred to close both

wptracy commented 1 year ago

Screenshot from 2023-01-28 15-30-16 Screenshot from 2023-01-28 15-30-26

The call didn't ring my phone when I used service: hassio.addon_stdin, so I tried to make the call from my desk phone wptracy-100 to my iphone wptracy-101.

wptracy-101 is registered on my iPhone wptracy-100 is on hassio

The SNOM IP phone SIP trace (below the hassio log trace) looks like it made it to the phone, but the phone never rang.

caller_id_uri: sip:wptracy-100@pbxes.com
realm: "*"
username: wptracy-100@pbxes.com
password: guess
sip_parameters: "null"
sip_server_uri: sip:www3.pbxes.com:36999

service: hassio.addon_stdin
data:
  addon: 89275b70_dss_voip
  input:
    call_sip_uri:sip:wptracy-101@pbxes.com
    message_tts: Write here your message

 Call <sip:wptracy-100@pbxes.com>/VoIP phone number
 to check system status.
 You'll find logs in /share/dss_voip/dss_autoanswer.log
-----------------------------------------------------------
[Info] Listening for messages via stdin service call...
[Info] Received messages {"call_sip_uri":"sip:wptracy-101@pbxes.com","message_tts":"Write here your message"}
Converting audio file 'http://10.0.0.233:8123/api/tts_proxy/3bb4cd06a7898fc0a33665f241cb48f2f2a192ac_en_-_google_translate.mp3'...
Audio succesfully converted...
Starting SIP Client and calling 'sip:wptracy-101@pbxes.com'...
This call will be terminated after '50' seconds.
15:24:23.715         os_core_unix.c !pjlib 2.11.1 for POSIX initialized
15:24:23.716         sip_endpoint.c  .Creating endpoint instance...
15:24:23.716                  pjlib  .select() I/O Queue created (0x7fa46d6100)
15:24:23.716         sip_endpoint.c  .Module "mod-msg-print" registered
15:24:23.716        sip_transport.c  .Transport manager created.
15:24:23.716           pjsua_core.c  .PJSUA state changed: NULL --> CREATED
15:24:23.739           pjsua_core.c  .pjsua version 2.11.1 for Linux-5.15.76/aarch64 initialized
15:24:23.746            pjsua_app.c  .Turning sound device -99 -99 ON
15:24:23.748                 main.c  Ready: Success
15:24:23.793            pjsua_app.c  .......Call 0 state changed to CALLING
>>>>
Account list:
  [ 0] <sip:172.30.33.5:5060>: does not register
       Online status: Online
  [ 1] <sip:172.30.33.5:5060;transport=TCP>: does not register
       Online status: Online
 *[ 2] sip:wptracy-100@pbxes.com: does not register
       Online status: Online
Buddy list:
 [ 1] <?>  sip:wptracy-101@pbxes.com
+=============================================================================+
|       Call Commands:         |   Buddy, IM & Presence:  |     Account:      |
|                              |                          |                   |
|  m  Make new call            | +b  Add new buddy       .| +a  Add new accnt |
|  M  Make multiple calls      | -b  Delete buddy         | -a  Delete accnt. |
|  a  Answer call              |  i  Send IM              | !a  Modify accnt. |
|  h  Hangup call  (ha=all)    |  s  Subscribe presence   | rr  (Re-)register |
|  H  Hold call                |  u  Unsubscribe presence | ru  Unregister    |
|  v  re-inVite (release hold) |  t  ToGgle Online status |  >  Cycle next ac.|
|  U  send UPDATE              |  T  Set online status    |  <  Cycle prev ac.|
| ],[ Select next/prev call    +--------------------------+-------------------+
|  x  Xfer call                |      Media Commands:     |  Status & Config: |
|  X  Xfer with Replaces       |                          |                   |
|  #  Send RFC 2833 DTMF       | cl  List ports           |  d  Dump status   |
|  *  Send DTMF with INFO      | cc  Connect port         | dd  Dump detailed |
| dq  Dump curr. call quality  | cd  Disconnect port      | dc  Dump config   |
|                              |  V  Adjust audio Volume  |  f  Save config   |
|  S  Send arbitrary REQUEST   | Cp  Codec priorities     |                   |
+-----------------------------------------------------------------------------+
|  q  QUIT   L  ReLoad   sleep MS   echo [0|1|txt]     n: detect NAT type     |
+=============================================================================+
You have 1 active call
Current call id=0 to sip:wptracy-101@pbxes.com [CALLING]
>>> 15:24:24.191            pjsua_app.c  SIP TCP transport is connected to 144.76.38.78:5060
15:24:24.511            pjsua_app.c  .....Call 0 state changed to CONNECTING
15:24:24.522            pjsua_app.c  .....Call 0 state changed to CONFIRMED
15:24:24.873     pjsua_app_common.c  .......
  [CONFIRMED] To: sip:wptracy-101@pbxes.com;tag=as4466e94b

    Call time: 00h:00m:00s, 1st res in 763 ms, conn in 774ms
    #0 audio PCMU @8kHz, sendrecv, peer=-
       SRTP status: Not active Crypto-suite: 
       RX pt=0, last update:00h:00m:00.000s ago
          total 0pkt 0B (0B +IP hdr) @avg=0bps/0bps
          pkt loss=0 (0.0%), discrd=0 (0.0%), dup=0 (0.0%), reord=0 (0.0%)
                (msec)    min     avg     max     last    dev
          loss period:   0.000   0.000   0.000   0.000   0.000
          jitter     :   0.000   0.000   0.000   0.000   0.000
       TX pt=0, ptime=20, last update:never
          total 18pkt 2.8KB (3.6KB +IP hdr) @avg=63.8Kbps/79.7Kbps
          pkt loss=0 (0.0%), dup=0 (0.0%), reorder=0 (0.0%)
                (msec)    min     avg     max     last    dev 
          loss period:   0.000   0.000   0.000   0.000   0.000
          jitter     :   0.000   0.000   0.000   0.000   0.000
       RTT msec      :   0.000   0.000   0.000   0.000   0.000
15:24:25.438     pjsua_app_common.c  ........
  [DISCONNCTD] To: sip:wptracy-101@pbxes.com;tag=as4466e94b

    Call time: 00h:00m:00s, 1st res in 763 ms, conn in 774ms
    #0 audio PCMU @8kHz, sendrecv, peer=-
       SRTP status: Not active Crypto-suite: 
       RX pt=0, last update:00h:00m:00.000s ago
          total 0pkt 0B (0B +IP hdr) @avg=0bps/0bps
          pkt loss=0 (0.0%), discrd=0 (0.0%), dup=0 (0.0%), reord=0 (0.0%)
                (msec)    min     avg     max     last    dev
          loss period:   0.000   0.000   0.000   0.000   0.000
          jitter     :   0.000   0.000   0.000   0.000   0.000
       TX pt=0, ptime=20, last update:never
          total 28pkt 4.4KB (5.6KB +IP hdr) @avg=63.5Kbps/79.4Kbps
          pkt loss=0 (0.0%), dup=0 (0.0%), reorder=0 (0.0%)
                (msec)    min     avg     max     last    dev 
          loss period:   0.000   0.000   0.000   0.000   0.000
          jitter     :   0.000   0.000   0.000   0.000   0.000
       RTT msec      :   0.000   0.000   0.000   0.000   0.000
15:24:25.438            pjsua_app.c  ......Call 0 is DISCONNECTED [reason=200 (Normal call clearing)]
15:24:26.439            pjsua_app.c  .Turning sound device -99 -99 OFF
No current call
>>> 15:25:15.254                timer.c  .Dumping timer heap:
15:25:15.254                timer.c  .  Cur size: 0 entries, max: 3070
[Info] Call ended...
[Info] Listening for messages via stdin service call...

Sent to udp:67.231.2.13:5008 at Jan 28 15:09:50 (889 bytes):

REGISTER sip:jmp.cbcbc7.auth.bandwidth.com:5008 SIP/2.0
Via: SIP/2.0/UDP 98.43.186.186:3073;branch=z9hG4bK-bcv9ghw3fe82;rport
From: "HomeAssistantjmp.cbcbc7.auth.bandwidth.com" <sip:6859810135@jmp.cbcbc7.auth.bandwidth.com:5008>;tag=ekgo7t8o3p
To: "HomeAssistantjmp.cbcbc7.auth.bandwidth.com" <sip:6859810135@jmp.cbcbc7.auth.bandwidth.com:5008>
Call-ID: 313637343530313531393439323539-mjpiap3jbjwj
CSeq: 3571 REGISTER
Max-Forwards: 70
User-Agent: snom821/8.7.5.35
Contact: <sip:6859810135@98.43.186.186:3073;line=si9a87cx>;reg-id=1;q=1.0;+sip.instance="<urn:uuid:29e982f3-bd4d-41f9-8dda-00041348D068>";audio;mobility="fixed";duplex="full";description="snom821";actor="principal";events="dialog";methods="INVITE,ACK,CANCEL,BYE,REFER,OPTIONS,NOTIFY,SUBSCRIBE,PRACK,MESSAGE,INFO"
Allow-Events: dialog
X-Real-IP: 10.0.0.91
Supported: path, gruu
Expires: 3600
Content-Length: 0

Received from udp:67.231.2.13:5008 at Jan 28 15:09:50 (751 bytes):

SIP/2.0 200 OK
Via: SIP/2.0/UDP 98.43.186.186:3073;branch=z9hG4bK-bcv9ghw3fe82;rport=3073
From: "HomeAssistantjmp.cbcbc7.auth.bandwidth.com" <sip:6859810135@jmp.cbcbc7.auth.bandwidth.com:5008>;tag=ekgo7t8o3p
To: "HomeAssistantjmp.cbcbc7.auth.bandwidth.com" <sip:6859810135@jmp.cbcbc7.auth.bandwidth.com:5008>;tag=gK00c61981
Call-ID: 313637343530313531393439323539-mjpiap3jbjwj
CSeq: 3571 REGISTER
Contact: <sip:6859810135@98.43.186.186:3073;line=si9a87cx>;reg-id=1;+sip.instance="<urn:uuid:29e982f3-bd4d-41f9-8dda-00041348D068>";audio;mobility="fixed";duplex="full";description="snom821";actor="principal";events="dialog";methods="INVITE,ACK,CANCEL,BYE,REFER,OPTIONS,NOTIFY,SUBSCRIBE,PRACK,MESSAGE,INFO";q=1.0
Expires: 60
Content-Length: 0

Sent to tcp:144.76.38.78:5060 at Jan 28 15:09:54 (1206 bytes):

INVITE sip:wptracy-101@pbxes.com SIP/2.0
Via: SIP/2.0/TCP 98.43.186.186:3073;branch=z9hG4bK-604uxjeegtr0;rport
From: "wptracy-100" <sip:wptracy-100@pbxes.com>;tag=asmbjfwks4
To: <sip:wptracy-101@pbxes.com>
Call-ID: 313637343934333739333433323034-vdkwh19979w6
CSeq: 1 INVITE
Max-Forwards: 70
User-Agent: snom821/8.7.5.35
Contact: <sip:wptracy-100@98.43.186.186:3073;transport=tcp>;reg-id=1
X-Serialnumber: 00041348D068
P-Key-Flags: resolution="31x13", keys="4"
Accept: application/sdp
Allow: INVITE, ACK, CANCEL, BYE, REFER, OPTIONS, NOTIFY, SUBSCRIBE, PRACK, MESSAGE, INFO, UPDATE
Allow-Events: talk, hold, refer, call-info
Supported: timer, 100rel, replaces, from-change
Session-Expires: 3600
Min-SE: 90
Content-Type: application/sdp
Content-Length: 430

v=0
o=root 487812184 487812184 IN IP4 98.43.186.186
s=call
c=IN IP4 98.43.186.186
t=0 0
m=audio 7026 RTP/AVP 9 0 8 99 112 18 101
a=rtpmap:9 G722/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:99 G726-32/8000
a=rtpmap:112 AAL2-G726-32/8000
a=rtpmap:18 G729/8000
a=fmtp:18 annexb=no
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
a=ptime:20
a=rtcp-xr:voip-metrics stat-summary=loss,dup,jitt
a=sendrecv

Received from tcp:144.76.38.78:5060 at Jan 28 15:09:54 (552 bytes):

SIP/2.0 407 Proxy Authentication Required
Via: SIP/2.0/TCP 98.43.186.186:3073;branch=z9hG4bK-604uxjeegtr0
From: "wptracy-100" <sip:wptracy-100@pbxes.com>;tag=asmbjfwks4
To: <sip:wptracy-101@pbxes.com>;tag=as24184dee
Call-ID: 313637343934333739333433323034-vdkwh19979w6
CSeq: 1 INVITE
User-Agent: PBX
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY
Contact: <sip:wptracy-101@144.76.38.78:5060;transport=tcp>
Proxy-Authenticate: Digest realm="pbxes.org", nonce="62dc5f1825ac58b0410aa0495f2122c821f48d07"
Content-Length: 0

Sent to tcp:144.76.38.78:5060 at Jan 28 15:09:54 (428 bytes):

ACK sip:wptracy-101@pbxes.com SIP/2.0
Via: SIP/2.0/TCP 98.43.186.186:3073;branch=z9hG4bK-604uxjeegtr0;rport
From: "wptracy-100" <sip:wptracy-100@pbxes.com>;tag=asmbjfwks4
To: <sip:wptracy-101@pbxes.com>;tag=as24184dee
Call-ID: 313637343934333739333433323034-vdkwh19979w6
CSeq: 1 ACK
Max-Forwards: 70
User-Agent: snom821/8.7.5.35
Contact: <sip:wptracy-100@98.43.186.186:3073;transport=tcp>;reg-id=1
Content-Length: 0

Sent to tcp:144.76.38.78:5060 at Jan 28 15:09:54 (1415 bytes):

INVITE sip:wptracy-101@pbxes.com SIP/2.0
Via: SIP/2.0/TCP 98.43.186.186:3073;branch=z9hG4bK-iltr1z1xl0k4;rport
From: "wptracy-100" <sip:wptracy-100@pbxes.com>;tag=asmbjfwks4
To: <sip:wptracy-101@pbxes.com>
Call-ID: 313637343934333739333433323034-vdkwh19979w6
CSeq: 2 INVITE
Max-Forwards: 70
User-Agent: snom821/8.7.5.35
Contact: <sip:wptracy-100@98.43.186.186:3073;transport=tcp>;reg-id=1
X-Serialnumber: 00041348D068
P-Key-Flags: resolution="31x13", keys="4"
Accept: application/sdp
Allow: INVITE, ACK, CANCEL, BYE, REFER, OPTIONS, NOTIFY, SUBSCRIBE, PRACK, MESSAGE, INFO, UPDATE
Allow-Events: talk, hold, refer, call-info
Supported: timer, 100rel, replaces, from-change
Session-Expires: 3600
Min-SE: 90
Proxy-Authorization: Digest username="wptracy-100",realm="pbxes.org",nonce="62dc5f1825ac58b0410aa0495f2122c821f48d07",uri="sip:wptracy-101@pbxes.com",response="4adc493e7415f2f556d10b7969b3f198",algorithm=MD5
Content-Type: application/sdp
Content-Length: 430

v=0
o=root 487812184 487812184 IN IP4 98.43.186.186
s=call
c=IN IP4 98.43.186.186
t=0 0
m=audio 7026 RTP/AVP 9 0 8 99 112 18 101
a=rtpmap:9 G722/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:99 G726-32/8000
a=rtpmap:112 AAL2-G726-32/8000
a=rtpmap:18 G729/8000
a=fmtp:18 annexb=no
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
a=ptime:20
a=rtcp-xr:voip-metrics stat-summary=loss,dup,jitt
a=sendrecv

Received from tcp:144.76.38.78:5060 at Jan 28 15:09:54 (418 bytes):

SIP/2.0 100 Trying
Via: SIP/2.0/TCP 98.43.186.186:3073;branch=z9hG4bK-iltr1z1xl0k4
From: "wptracy-100" <sip:wptracy-100@pbxes.com>;tag=asmbjfwks4
To: <sip:wptracy-101@pbxes.com>
Call-ID: 313637343934333739333433323034-vdkwh19979w6
CSeq: 2 INVITE
User-Agent: PBX
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY
Contact: <sip:wptracy-101@144.76.38.78:5060;transport=tcp>
Content-Length: 0

Received from tcp:144.76.38.78:5060 at Jan 28 15:09:55 (706 bytes):

SIP/2.0 200 OK
Via: SIP/2.0/TCP 98.43.186.186:3073;branch=z9hG4bK-iltr1z1xl0k4
From: "wptracy-100" <sip:wptracy-100@pbxes.com>;tag=asmbjfwks4
To: <sip:wptracy-101@pbxes.com>;tag=as6ae91699
Call-ID: 313637343934333739333433323034-vdkwh19979w6
CSeq: 2 INVITE
User-Agent: PBX
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY
Contact: <sip:wptracy-101@144.76.38.78:5060;transport=tcp>
Content-Type: application/sdp
Content-Length: 244

v=0
o=root 101588 101588 IN IP4 144.76.38.78
s=session
c=IN IP4 144.76.38.78
t=0 0
m=audio 37816 RTP/AVP 0 8 99 101
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:99 G726-32/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16

Sent to tcp:144.76.38.78:5060 at Jan 28 15:09:55 (450 bytes):

ACK sip:wptracy-101@144.76.38.78:5060;transport=tcp SIP/2.0
Via: SIP/2.0/TCP 98.43.186.186:3073;branch=z9hG4bK-6td2zxqtu9r8;rport
From: "wptracy-100" <sip:wptracy-100@pbxes.com>;tag=asmbjfwks4
To: <sip:wptracy-101@pbxes.com>;tag=as6ae91699
Call-ID: 313637343934333739333433323034-vdkwh19979w6
CSeq: 2 ACK
Max-Forwards: 70
User-Agent: snom821/8.7.5.35
Contact: <sip:wptracy-100@98.43.186.186:3073;transport=tcp>;reg-id=1
Content-Length: 0
sdesalve commented 1 year ago

sip_parameters: "null" sip_server_uri: sip:www3.pbxes.com:36999

Why this?

Copy values from my example to the configuration in the docs

wptracy commented 1 year ago

that's what I did copy from you i wondered why too

sdesalve commented 1 year ago

In sip_parameters paste

caller_id_uri: 'sip:extension@pbxes.com'
realm: '*'
username: 'extension'
password: 'password'

https://github.com/sdesalve/hassio-addons/tree/master/dss_voip#pbxescom-phonebox

wptracy commented 1 year ago

It's that same thing again. yaml doesn't like it. Failed to save add-on configuration, Missing option 'caller_id_uri' in sip_parameters in DSS VoIP Notifier (89275b70_dss_voip). Got {'sip_parameters': {'sip_parameters': {'caller_id_uri': 'sip:wptracy-100@pbxes.com', 'realm': '*', 'username': 'wptracy-100', 'password': 'guess'}}} Screenshot from 2023-01-28 15-38-40

sdesalve commented 1 year ago

Screenshot_2023-01-28-23-40-25-340-edit_com android chrome

wptracy commented 1 year ago

yaml took that. let me make a test call

sdesalve commented 1 year ago

Or paste yaml here

Screenshot_2023-01-28-23-43-01-165-edit_io homeassistant companion android

wptracy commented 1 year ago

what is that no-ip address, is that my private ip of home assistant?

sip_parameters:
  caller_id_uri: sip:wptracy-100@pbxes.com
  realm: "*"
  username: wptracy-100
  password: guess
pjsua_custom_options: "--no-tcp --ip-addr=10.0.0.233"

[cont-init.d] 01-log-level.sh: executing... 
[cont-init.d] 01-log-level.sh: exited 0.
[cont-init.d] done.
[services.d] starting services
[services.d] done.
[Info] Starting addon...
PJSUA_CUSTOM_OPTIONS = '--no-tcp --ip-addr=10.0.0.233'
[Info] Listening for messages via stdin service call...
[Info] Received messages {"call_sip_uri":"sip:wptracy-101@pbxes.com","message_tts":"Write here your message"}
Converting audio file 'http://10.0.0.233:8123/api/tts_proxy/3bb4cd06a7898fc0a33665f241cb48f2f2a192ac_en_-_google_translate.mp3'...
Audio succesfully converted...
Starting SIP Client and calling 'sip:wptracy-101@pbxes.com'...
This call will be terminated after '50' seconds.
15:45:28.755         os_core_unix.c !pjlib 2.11.1 for POSIX initialized
15:45:28.756         sip_endpoint.c  .Creating endpoint instance...
15:45:28.756                  pjlib  .select() I/O Queue created (0x7f9d274100)
15:45:28.756         sip_endpoint.c  .Module "mod-msg-print" registered
15:45:28.756        sip_transport.c  .Transport manager created.
15:45:28.756           pjsua_core.c  .PJSUA state changed: NULL --> CREATED
15:45:28.781           pjsua_core.c  .pjsua version 2.11.1 for Linux-5.15.76/aarch64 initialized
15:45:28.787            pjsua_app.c  .Turning sound device -99 -99 ON
15:45:28.788                 main.c  Ready: Success
15:45:28.790            pjsua_app.c  .......Call 0 state changed to CALLING
>>>>
Account list:
  [ 0] <sip:10.0.0.233:5060>: does not register
       Online status: Online
 *[ 1] sip:wptracy-100@pbxes.com: does not register
       Online status: Online
Buddy list:
 [ 1] <?>  sip:wptracy-101@pbxes.com
+=============================================================================+
|       Call Commands:         |   Buddy, IM & Presence:  |     Account:      |
|                              |                          |                   |
|  m  Make new call            | +b  Add new buddy       .| +a  Add new accnt |
|  M  Make multiple calls      | -b  Delete buddy         | -a  Delete accnt. |
|  a  Answer call              |  i  Send IM              | !a  Modify accnt. |
|  h  Hangup call  (ha=all)    |  s  Subscribe presence   | rr  (Re-)register |
|  H  Hold call                |  u  Unsubscribe presence | ru  Unregister    |
|  v  re-inVite (release hold) |  t  ToGgle Online status |  >  Cycle next ac.|
|  U  send UPDATE              |  T  Set online status    |  <  Cycle prev ac.|
| ],[ Select next/prev call    +--------------------------+-------------------+
|  x  Xfer call                |      Media Commands:     |  Status & Config: |
|  X  Xfer with Replaces       |                          |                   |
|  #  Send RFC 2833 DTMF       | cl  List ports           |  d  Dump status   |
|  *  Send DTMF with INFO      | cc  Connect port         | dd  Dump detailed |
| dq  Dump curr. call quality  | cd  Disconnect port      | dc  Dump config   |
|                              |  V  Adjust audio Volume  |  f  Save config   |
|  S  Send arbitrary REQUEST   | Cp  Codec priorities     |                   |
+-----------------------------------------------------------------------------+
|  q  QUIT   L  ReLoad   sleep MS   echo [0|1|txt]     n: detect NAT type     |
+=============================================================================+
You have 1 active call
Current call id=0 to sip:wptracy-101@pbxes.com [CALLING]
>>> 15:45:29.024        tsx0x7f9c50d6d8  .......Temporary failure in sending Request msg INVITE/cseq=22243 (tdta0x7f9c506aa8), will try next server: Unsupported transport (PJSIP_EUNSUPTRANSPORT)
15:45:29.341            pjsua_app.c  .....Call 0 state changed to CONNECTING
15:45:29.350            pjsua_app.c  .....Call 0 state changed to CONFIRMED
15:45:29.554     pjsua_app_common.c  .......
  [CONFIRMED] To: sip:wptracy-101@pbxes.com;tag=as29cd848a

    Call time: 00h:00m:00s, 1st res in 553 ms, conn in 562ms
    #0 audio PCMU @8kHz, sendrecv, peer=-
       SRTP status: Not active Crypto-suite: 
       RX pt=0, last update:00h:00m:00.004s ago
          total 0pkt 0B (0B +IP hdr) @avg=0bps/0bps
          pkt loss=0 (0.0%), discrd=0 (0.0%), dup=0 (0.0%), reord=0 (0.0%)
                (msec)    min     avg     max     last    dev
          loss period:   0.000   0.000   0.000   0.000   0.000
          jitter     :   0.000   0.000   0.000   0.000   0.000
       TX pt=0, ptime=20, last update:never
          total 11pkt 1.7KB (2.2KB +IP hdr) @avg=66.4Kbps/83.0Kbps
          pkt loss=0 (0.0%), dup=0 (0.0%), reorder=0 (0.0%)
                (msec)    min     avg     max     last    dev 
          loss period:   0.000   0.000   0.000   0.000   0.000
          jitter     :   0.000   0.000   0.000   0.000   0.000
       RTT msec      :   0.000   0.000   0.000   0.000   0.000
15:46:18.739     pjsua_app_common.c  ...
  [CONFIRMED] To: sip:wptracy-101@pbxes.com;tag=as29cd848a

    Call time: 00h:00m:49s, 1st res in 553 ms, conn in 562ms
    #0 audio PCMU @8kHz, sendrecv, peer=-
       SRTP status: Not active Crypto-suite: 
       RX pt=0, last update:00h:00m:00.001s ago
          total 0pkt 0B (0B +IP hdr) @avg=0bps/0bps
          pkt loss=0 (0.0%), discrd=0 (0.0%), dup=0 (0.0%), reord=0 (0.0%)
                (msec)    min     avg     max     last    dev
          loss period:   0.000   0.000   0.000   0.000   0.000
          jitter     :   0.000   0.000   0.000   0.000   0.000
       TX pt=0, ptime=20, last update:never
          total 1.4Kpkt 230.2KB (287.8KB +IP hdr) @avg=37.4Kbps/46.8Kbps
          pkt loss=0 (0.0%), dup=0 (0.0%), reorder=0 (0.0%)
                (msec)    min     avg     max     last    dev 
          loss period:   0.000   0.000   0.000   0.000   0.000
          jitter     :   0.000   0.000   0.000   0.000   0.000
       RTT msec      :   0.000   0.000   0.000   0.000   0.000
15:46:18.740            pjsua_app.c  .Call 0 is DISCONNECTED [reason=200 (OK)]
>>> 15:46:19.740            pjsua_app.c  ..Turning sound device -99 -99 OFF
15:46:20.330                timer.c  .Dumping timer heap:
15:46:20.330                timer.c  .  Cur size: 0 entries, max: 3070
[Info] Call ended...
[Info] Listening for messages via stdin service call...

Screenshot from 2023-01-28 15-55-51 Screenshot from 2023-01-28 15-55-32

wptracy commented 1 year ago

I can see the call go thru and display on the phone, but it's only a 500ms display, and the call is over before it can ring or be answered.

I used to be able to ring these phones from iPhone to SNOM. That was before I deleted wptracy-13039339035 and made it extension 100.

Is this all that needs to be populated in pbxes.com. It says dial sip/wptracy-101, not sip:wptracy-101.

but that doesn't sound right.

Screenshot from 2023-01-28 15-30-26

sdesalve commented 1 year ago

Please remove pjsua_options

--no-tcp Screenshot_2023-01-29-06-48-51-787-edit_com android chrome

There isn't in docs samples https://github.com/sdesalve/hassio-addons/tree/master/dss_voip#pbxescom-phonebox

You can add

sip_server_uri: 'sip:www3.pbxes.com:36999'

So you can call Hassio from phone. Without that option Hassio will not register and you can't call his extension

wptracy commented 1 year ago

sip:www3.pbxes.com doesn't resolve. wptracy@wptracy:~$ ping sip:www3.pbxes.com ping: sip:www3.pbxes.com: Name or service not known

But I did find an https://www1.pbxes.com/ and tried: sip_server_uri: 'sip:www1.pbxes.com:36999'

I tried to ring it, but it only rings the sip phone. Is Hassio supposed to do something? When sip_server_uri: 'sip:www1.pbxes.com:36999' is in the DSS VoIP Notifier Configuration, this text (Call sip:wptracy-3039339035@pbxes.com/VoIP phone number to check system status.) is logged and a file called dss_autoanswer.conf is created. its contents are below. It says a file called /etc/dss_autoanswer.wav is created. but I looked there, and there is no file. It creates a wave file. How do you call hassio and hear that wav file.

I added sip:wptracy-3039339035@pbxes.com to my quick dial list and called it. I got reorder and then silence.

[core-ssh dss_voip]$ cat dss_autoanswer.conf
--registrar sip:www1.pbxes.com:36999
--id sip:user@pbxes.com
--realm *
--username user
--password password
--local-port 0
--null-audio
--auto-play
--play-file /etc/dss_autoanswer.wav
--duration 30
--auto-answer 200
--auto-loop
--max-calls 5
[core-ssh dss_voip]$ 

[Info] Registering as SIP Client...
-----------------------------------------------------------
                  SIP Client registered.

 Call <sip:wptracy-3039339035@pbxes.com>/VoIP phone number
 to check system status.  You'll find logs in /share/dss_voip/dss_autoanswer.log
-----------------------------------------------------------

There is no dss_autoanswer.log

when I run: pjsua --app-log-level=4 --config-file '/share/dss_voip/dss_pjsua.conf' 'sip:wptracy-3039339035@pbxes.com it says: Creating file player: /share/dss_voip/dss_message_tts.wav.. but there is no dss_voip/dss_message_tts.wav file

How am I supposed to hear this status message.

Aslo, When Home Assistant boots, it deletes apk add --no-cache pjsua. Why is that?

https://www1.pbxes.com/community_e.php?display=wiki Because of DNS entries for pbxes.org your device may be selecting port 5060 automatically. If you want to use an alternative port enter 144.76.38.78 as SIP server.

sdesalve commented 1 year ago

sip:www3.pbxes.com doesn't resolve. wptracy@wptracy:~$ ping sip:www3.pbxes.com ping: sip:www3.pbxes.com: Name or service not known

But I did find an https://www1.pbxes.com/ and tried: sip_server_uri: 'sip:www1.pbxes.com:36999'

It was my old configuration. Now I can see that www.pbxes.com will redirect to www1.pbxes.com. They must have changed their server configuration...

--id sip:user@pbxes.com --realm * --username user --password password

you must use for username yourusername-internnumber eg wptracy-100@pbxes.com

Creating file player: /share/dss_voip/dss_message_tts.wav.. but there is no dss_voip/dss_message_tts.wav file

It was be placed into addon. If you run pjsua from ssh, you must copy and place it from github

There is no dss_autoanswer.log

it was created from my addon script from stdout of pjsua...

Aslo, When Home Assistant boots, it deletes apk add --no-cache pjsua. Why is that?

It's normal. Hassio will restore original image each reboot. You'll need to install it evary first run after reboot