Jump to content

Scott1234

Members
  • Posts

    207
  • Joined

  • Last visited

Posts posted by Scott1234

  1. Inter domain dialling multi-tenant.

    As I was not able to find good doco when attempting this, I have made my own notes to share. Obviously special considerations are needed for overlapping extension domains, which the standard doco talks about.

    Ideally, I would like a way to only allow the alias/DID to be matched on the loop back not extension, mainly so when I dial the on-net tenant DID it goes internally, I don’t necessarily care about extension number to extension number but an option to pick would be nice. But I might be able to do that with, Use a list of expressions option for the inbound side matching. 

    Note,

    • Using global tenant dial plans
    • This does not leverage a "try loop back" dial plan at all, not sure the danger but seems to be fine. 
    • No need to disable Loopback detection 

    What I did,

    1. Create localhost domain
    2. Create trunk in localhost domain called on-net, sip gateway no registration, Outbound Proxy = sip:127.0.0.1:5060 (or pbx custom sip port) with the following settings.
    3. aadr: 127.0.0.1
      analog: false
      ani_emergency: 
      ani_regular: 
      area_code: 
      bcp: 
      behind_nat: false
      cid_update: 
      cobusy: 500 Line Unavailable
      code: 
      codec_count: 
      codec_lock: false
      codecs: 
      codest: 
      contact_hdr: 
      country_code: 
      dial_extension: 
      dialplan: 
      dir: 
      dis: false
      dtmf: false
      dtmf_mode: 
      earlymedia: true
      expires: 3600
      failover: except_busy
      fraction: 128
      from_source: ppi
      from_user: 
      glob: 
      global: true
      hcv: 
      hd: 
      hf: {from}
      hpai: 
      hppi: 
      hpr: 
      hrpi: 
      hru: {request-uri}
      ht: <{request-uri}>
      ice: false
      icid: 
      identity: 
      ignore_18x_sdp: true
      info_agent: false
      interoffice: false
      minimum: 10
      name: on-net
      other_headers: 
      outbound_proxy: sip:127.0.0.1:5060
      pidflo: false
      prack: false
      prefix: 
      redirect: false
      reg_account: 
      reg_display: 
      reg_keep: 
      reg_registrar: 
      reg_user: 
      remote_party: 
      request_timeout: 
      require: 
      reregister_dns: false
      rfcrtp: false
      ring180: false
      rtcpxr: false
      rtp_begin: 
      rtp_end: 
      sdpreq: 
      send_email: 
      sip_port: 
      spam: false
      stir: 
      t38_enabled: false
      teams: false
      tel: true
      trusted: true
      type: gateway
      use_epid: false
      use_history: false
      use_sdes: 
      use_uuid: false
      user_defined_hdr: 
      wrtc_dest_name: 
      wrtc_dest_number: 

       

    4. Edit your dial plans and place below emergency but above your normal region dial plans. 
      15;on-net;;*;*;;false

    As trunk on-net is set to fail-over except busy if no internal match is found it will flow as per the rest of the dial plan. 

     

     

     

  2. After further testing the only way I could get loop back to work when the base system was on non-standard SIP ports was to also add the original ports back in to the "SIP Settings" page. Even with specifying the 127.0.0.1:customport on the loopback trunk to use the nonstandard port it would not work.

    ¯\_(ツ)_/¯

    Edit - Got it working on the standard port. I will post some doco as I was not able to find much to get this working.

  3. 3 hours ago, Vodia Telephone System said:

    Unfortunately it can't be done with the simple settings.

    If we do it, it will have to be done in code.

    Obviously due to the lack of response.. so when are you going to support Teams integration better?. Add on's, plugins, integrations all ways seem to be half baked in my experience with the pbx. I have a list of a lot more things wrong with Teams integration...

  4. I have only noticed one thing now that I have had this running out in the wild for a while.

    When using

    transfer.semi_attend_tran_enable = 0

    Along with,

    transfer.dsskey_deal_type = 1

    When switching it to a blind transfer during ring back as the call was started as a attended transfer it will trigger a missed call e-mail from the pbx when it transitions the call to blind transfer, which is annoying as you get a false positive of a missed call. 

    Not sure if anything could be done @Vodia PBX?

    Maybe an adjustable missed call timer, so if less than say 2 seconds don't bother sending missed call.?

    The PBX seems to send a missed call right away even with a split-second direct call/hang up/cancel . 

     

  5. Did you forget to add the,

    Quote

    Yealink Added site and enterprise ID as parameter to the template.

    to the pnp_yealink.xml ? I could not see on the web UI or in the xml, after upgrade. 

    I see the voice country tone settings made it :D wooo

  6. Also, to add to this. @Vodia PBX

    I noticed if a Call Q member is using the DND function of their phone the Q treats them as logged out as the agent login activity will reflect the use of DND. Which is great and expected. 

    What's missing, Could the system put a check in place that's linked to the Number of logged in agents required to allow log out to Deny the use of DND? in that instance?

    A busy customer managed to have all of their agents on DND, thinking someone else was covering.

    I know what you're going to say :D , use the login log out function... But the login logout function is a bit more cumbersome than simply using DND especially if the agent is in more than one Q, I am all about streaming the user experience, the least steps possible. 

    Also, BLF sync for single login logout BLF gets lost if there are internet glitches/outages the phone comes back the status of the login/out will be unavailable until next pressed which is annoying, might be a Yealink thing but who knows, I am not sure how it maintaining the BLF sync I do notice single login/out BLF buttons use some kind of special star code *60 that is not documented in the star codes section. 

     

     

  7. I am not sure what to say.....

    I will come back to this and post with more detail. when I have some spare time to try to explain what I am saying. As it does not work as intended with the default yealink_common settings, but I will make sure I document and capture everything I am saying.

    To try show you. It's not like I am making this up ....

     

     

  8. 10 hours ago, Vodia PBX said:

    Well, the whole point is to post-process what has been generated. Yes you can think about post-post-processed content 😬, but IMHO the post-processing does everything you need and there should be no reason to edit the template if you just want to add or override a setting.

    I am not sure you are understanding what I am saying??

    Here is an example you can test. 

    Try and set this in Yealink General, with your default yealink config, key examples in bold.

    ##STUN NAT##
    account.1.nat.rport = 2
    account.1.nat.nat_traversal = 1
    static.sip.nat_stun.enable = 1
    static.sip.nat_stun.server = stun.server
    static.sip.nat_stun.port = 3478

    or

    ##daily autop for button renames##
    static.auto_provision.weekly.enable = 1
    static.auto_provision.weekly.begin_time = 0:00
    static.auto_provision.weekly.end_time = 3:00
    static.auto_provision.weekly.dayofweek = 0123456

     

    And you will see it won't apply them because the base file has them defined, below where the {parameter yealink-general} section is, hence the last occurrence wins, being. 

    account.{lc}.nat.nat_traversal = 0

    auto_provision.weekly.enable = 0

     

  9. 9 hours ago, Vodia PBX said:

    Anyhow, the PBX post-processes the Yealink provisioning files anyway. If there was an enterprise or site-ID, it will be dropped from the file.

    Yeah but I thought the idea here is to not have to edit the base file, which I am doing and I have removed {parameter yealink-general} from where it sits normally and put it below {post-process-yealink} due to what I have mentioned.

    I am saying if you simply move its location as part of the base pbx setup then we can be sure that any added changes to {post-process-yealink} will get applied and over write other defined settings. 

    As yes it does seem to process it based on reoccurrence and over write that setting, even though the structure of the file generated shows two lots of commands with one being at the bottom, the last occurrence wins it seems. 

    I guess to keep the config clean it would need a way of matching and merging/updating the same statements.  

  10. 29 minutes ago, Vodia PBX said:

    In Yealink provisioning world, the first occurrence of a setting wins. So it should be okay if parameters show up in the Yealink general and then again later in the provisioning file again.

    I can tell you thats not whats going on with it where it is. Hence why I have posted it. Only resolved with it at the bottom. 

  11. 10 hours ago, Vodia PBX said:

    Thanks, great suggestions. We'll add an enterprise and site ID parameter to the next version and also provide the tone country for a better local experience so you don't have to do that. 

    We recommend to use the Yealink General parameter so that you don't have to customize (and freeze) the yealink_common template.

    Yep, I program into general prams for that reason, but you guys need to move the general parameter include statement to the end of the Yealink provisioning template so that if we want to make a change to something that exists in the config below where it includes the parameters now it's not overwritten by the base again. 

     

     

  12. 10 hours ago, SeanKann said:

    it would be nice to have the wallboard not require a user to view it so if we want to put it on a TV screen etc we can just go to a URL to view it

    example companypbx.com/wallboard/500 <-- 500 being the ext number of the queue or even if you do put a password make it so you can log in once to remember or something.

     

    Just a suggestion

    or IP whitelist 

  13. Here are my Yealink tweaks that might help you, note some only work when you modify the base yealink config and move the general pram include statement to the end of the file. 

    I have found running with this setup I get way less call errors and failed alerts from the Yealink YMCS management portal. 

    ##DNS CONTROL## (Never trust a customers DHCP DNS set your own..)
    static.network.static_dns_enable = 1
    static.network.primary_dns = x.x.x.x
    static.network.secondary_dns = x.x.x.x

    ##STUN NAT## (less random errors noted in YMCS)
    account.1.nat.rport = 2
    account.1.nat.nat_traversal = 1
    static.sip.nat_stun.enable = 1
    static.sip.nat_stun.server = stun.server
    static.sip.nat_stun.port = 3478

    ##Remove SIP server 2 duplicate##
    account.1.sip_server.2.address = %NULL%

    ##DM YEALINK## (YMCS great for remote management)
    dm.enterprise_id = enterprise code
    dm.site_id = site code

    ##LOCAL TONES## (Make true tones for your country)
    voice.tone.country = countryname

    ##Dial Now Delay## (When using PNP proper dial plan)
    phone_setting.dialnow_delay = 2

    ##LONG KEY LABLES## (More button realestate is welcomed by all)
    features.config_dsskey_length = 1

    ##Fix DSS Trans with pbx call back## (Fixes transfer so can make use of pbx transfer reminder)
    transfer.semi_attend_tran_enable = 0

    ##CustomRingTones## (I found I still had to upload my own to the phone)
    ringtone.url = my custom tones
    ringtone.url = my custom tones

    ##daily autop for button renames between midnight and 3am random## (Daily random sync so if customer puts in jobs for button name updates all phones will sync to download out of hours)
    static.auto_provision.weekly.enable = 1
    static.auto_provision.weekly.begin_time = 0:00
    static.auto_provision.weekly.end_time = 3:00
    static.auto_provision.weekly.dayofweek = 0123456

    ##Phone web timeout## (Sick of being logged out to soon when doing remote support)
    features.relog_offtime = 30

    ##Fixs for pickup from blf and parks when using no outbound proxy ##
    features.call_park.park_mode = 1
    features.pickup.direct_pickup_code = *87 
    features.blf_pickup_only_send_code = 0 
    account.1.dialoginfo_callpickup = 0
     

    ##BLF PAGE TIPS## (When monitoring more BLF's and you get the virtual page key, the phone will flash the page that has the monitored blf blinking)
    phone_setting.page_tip = 1

     

     

     

  14. You don't really need to set dir settings url unless you build a custom xml.

    yealink-favorite.xml in phone pnp covers directory settings url, you will figure out what its doing by looking at that.

    DSS Key Type, I all ways use "1" as this has the best user experience on Yealink. 

    When using mode 1, pressing a monitored BLF key while in call will result in a Attended transfer, so you can be in the call then press DSS BLF key and the caller is put on hold automatically and a new call is started to the other extension then you can talk and hang up to transfer or press transfer soft key. 

    Default operation is blind transfer, which means you have to manually hold the call then start a new call and press the BLF button, not ideal, too many steps. With mode one you can get the call to the other party in two moves vs three or four, I forget how many extra steps default mode made it but it feels awkward. 

    If you combine DSS Key Type 1, with my other post post on Yealink and transfer reminder you will get the best operation.

    I also find better stable operation of using park mode in FAC mode on Yealink.

    I only do yealink's so I know a fair bit on them, AMA lol. It was once snom but prices here are way too high. 

     

     

     

  15. While reading some other Yealink doc's I came across doco on something that could work better as a hot desking function, all though not intended for that.  As I too have had issues with 'hot desking' which for functionally reasons I need to do it not using the pbx's vison of hot desking.

    Yet to investigate fully, but my thinking is you could use PIN code AutoP where you have a base common config, then the pin CFG files (hot desk users) stored alongside in the backend of the pbx. 

    Yealink SIP IP Phones Auto Provisioning Guide V1.0.pdf

    Refer to, Auto Provisioning via Activation Code & Auto Provisioning via PIN Code, then you can treat each user load like it was a separate device with its own config. 

    But without yet testing not sure if the user workflow trying to do it this way would be acceptable, its on my list at some point to try out. 

     

     

  16. So, did you ever get to messing around with this?

    The Teams admin GUI now caters for inputting the DID / extension separately which makes it present neatly on the team's client. 

    so instead of setting, the three-digit extension as the "DID" we should be setting that as the extension as per above, but the trunk would need a option for it. 

     

  17. When started from the PBX side so, external call. It will use SRTP and this is what the SDP looks like, and the Protocol will be marked as SRTP. And no SRTP fail alerts from Yealink DM/RPS system. 

    PBX -> Phone

    Session Description Protocol
        Session Description Protocol Version (v): 0
        Owner/Creator, Session Id (o): - 774385152 774385152 IN IP4 XXX.XXX.XXX.XXX
        Session Name (s): -
        Connection Information (c): IN IP4 XXX.XXX.XXX.XXX
        Time Description, active time (t): 0 0
        Media Description, name and address (m): audio 51428 RTP/SAVP 8 101
        Media Attribute (a): crypto:1 AES_CM_128_HMAC_SHA1_32 inline:oP4MFtsvAaIRFPjMEY+vuaRhV0IS+Wu95uRyaiSQ
        Media Attribute (a): rtpmap:8 PCMA/8000
        Media Attribute (a): rtpmap:101 telephone-event/8000
        Media Attribute (a): fmtp:101 0-15
        Media Attribute (a): ptime:20
        Media Attribute (a): rtcp-xr:rcvr-rtt=all voip-metrics
        Media Attribute (a): sendrecv
        [Generated Call-ID: 42ee1295@pbx]

    Phone -> PBX

    Session Description Protocol
        Session Description Protocol Version (v): 0
        Owner/Creator, Session Id (o): - 20009 20009 IN IP4 XXX.XXX.XXX.XXX
        Session Name (s): SDP data
        Connection Information (c): IN IP4 XXX.XXX.XXX.XXX
        Time Description, active time (t): 0 0
        Media Description, name and address (m): audio 12440 RTP/SAVP 8 101
        Media Attribute (a): rtpmap:8 PCMA/8000
        Media Attribute (a): ptime:20
        Media Attribute (a): rtpmap:101 telephone-event/8000
        Media Attribute (a): fmtp:101 0-15
        Media Attribute (a): crypto:1 AES_CM_128_HMAC_SHA1_32 inline:ttCdLX6ZvWf7NoUibr+tyZ4d2pQx8dtMhXb98Tdn
        Media Attribute (a): sendrecv
        Media Attribute (a): rtcp:12441
        [Generated Call-ID: 42ee1295@pbx]

    From Yealink Site,

    https://support.yealink.com/en/portal/knowledge/show?id=5acd46f5b10e6e087e86b614

  18. On 6/10/2023 at 10:36 PM, Vodia PBX said:

    Hmm. I am sure it did work at some point, however Yealink used to have the problem that the SIP TLS did not include the TLS/SNI extension which is a problem for multi-tenancy. But if SIP/TLS works, I would not see any problem negotiation the SRTP/SDES keys. 

    The SDP looks like this with a call starting from the handset. But then proceeds to send as non SRTP. 

    Phone -> PBX

    Frame 1: 1356 bytes on wire (10848 bits), 1356 bytes captured (10848 bits)
    Ethernet II, Src: 00:00:00_00:00:00 (00:00:00:00:00:00), Dst: 00:00:00_00:00:00 (00:00:00:00:00:00)
    Internet Protocol Version 4, Src: XXX.XXX.XXX.XXX, Dst: XXX.XXX.XXX.XXX
    User Datagram Protocol, Src Port: 12270, Dst Port: XXXX
    Session Initiation Protocol (INVITE)
        Request-Line: INVITE sip:XXX@XXXXX.COM:XXXX;user=phone SIP/2.0
        Message Header
        Message Body
            Session Description Protocol
                Session Description Protocol Version (v): 0
                Owner/Creator, Session Id (o): - 20008 20008 IN IP4 XXX.XXX.XXX.XXX
                Session Name (s): SDP data
                Connection Information (c): IN IP4 XXX.XXX.XXX.XXX
                Time Description, active time (t): 0 0
                Media Description, name and address (m): audio 12438 RTP/AVP 8 0 107 9 101 102
                Media Attribute (a): rtcp:12439
                Media Attribute (a): rtpmap:8 PCMA/8000
                Media Attribute (a): rtpmap:0 PCMU/8000
                Media Attribute (a): rtpmap:107 opus/48000/2
                Media Attribute (a): fmtp:107 sprop-maxcapturerate=48000; maxaveragebitrate=40000; maxplaybackrate=48000; useylrtx=1; useinbandfec=1
                Media Attribute (a): rtpmap:9 G722/8000
                Media Attribute (a): ptime:20
                Media Attribute (a): sendrecv
                Media Attribute (a): rtpmap:101 telephone-event/8000
                Media Attribute (a): fmtp:101 0-15
                Media Attribute (a): rtpmap:102 telephone-event/48000
                Media Attribute (a): fmtp:102 0-15
                Media Attribute (a): crypto:1 AES_CM_128_HMAC_SHA1_80 inline:Qd1a3pYU0wuRVFUYIHgjag/i7U05sJy+eNQBAOkr
                Media Attribute (a): crypto:2 AES_CM_128_HMAC_SHA1_32 inline:rq9ThvgXz6vkwdbFZCIfCdR6qGcowDhvNJvTBPKv
                [Generated Call-ID: 0_911050508@192.168.1.33]

    PBX -> Phone

    Frame 3: 1020 bytes on wire (8160 bits), 1020 bytes captured (8160 bits)
    Ethernet II, Src: 00:00:00_00:00:00 (00:00:00:00:00:00), Dst: 00:00:00_00:00:00 (00:00:00:00:00:00)
    Internet Protocol Version 4, Src: XXX.XXX.XXX.XXX, Dst: XXX.XXX.XXX.XXX
    User Datagram Protocol, Src Port: XXXX, Dst Port: 12270
    Session Initiation Protocol (200)
        Status-Line: SIP/2.0 200 Ok
        Message Header
        Message Body
            Session Description Protocol
                Session Description Protocol Version (v): 0
                Owner/Creator, Session Id (o): - 323925493 323925493 IN IP4 XXX.XXX.XXX.XXX
                Session Name (s): -
                Connection Information (c): IN IP4 XXX.XXX.XXX.XXX
                Time Description, active time (t): 0 0
                Media Description, name and address (m): audio 53990 RTP/AVP 8 101
                Media Attribute (a): crypto:1 AES_CM_128_HMAC_SHA1_80 inline:NoxP2O73jCrJ6flyRiTHneE9eC9Ex3wDjB0npLrR
                Media Attribute (a): rtpmap:8 PCMA/8000
                Media Attribute (a): rtpmap:101 telephone-event/8000
                Media Attribute (a): fmtp:101 0-15
                Media Attribute (a): ptime:20
                Media Attribute (a): rtcp-xr:rcvr-rtt=all voip-metrics
                Media Attribute (a): sendrecv
                [Generated Call-ID: 0_911050508@192.168.1.33]

    Key's are being offered, but not being accepted. Any ideas on what to look at ? I really want end to end encryption. The phones all talk over TLS no problems, even if you say use only trusted certs on the phone that all works. 

  19. just to add to this :P

    How the hunt group has a missed calls e-mail you can define, I still think this is highly relevant to Call Queues, as there are times where calls are missed and for the system to send an e-mail like how the hunt group does it allows for better client based work flow's that are triggered from this e-mail. While keeping the benefits of Call Q's and not having to let calls move out to hunt groups. 

     

  20. I have reverted from TLS mode to TCP for now, until I can figure out a solution.  If you have any ideas please share. 

    As I am wanting to advertise end to end encrypted calls but cant if one leg wont encrypt. 

  21. In my messing around with Yealink and TLS and SRTP I have now reverted the system back from native TLS mode to TCP as whats the point if I cant encrypt all the streams, as I cant advertise as so.

    Any way since going back to system level native TCP mode I noticed the app does not suffer the glitches in the initial call establishment. ¯\_(ツ)_/¯

×
×
  • Create New...