00:00.12 | grummund | it gets response 100 Trying, then 200 OK. |
00:00.25 | Kobaz | that's also good |
00:01.08 | grummund | in fact i can complete a call to the provider's test number |
00:01.18 | Kobaz | so what's the issue? |
00:01.47 | grummund | but any other call is dropped right after it is set up |
00:02.25 | Kobaz | sounds like you need to get the entire trace and show your transports configuration |
00:02.34 | Kobaz | sounds like a NAT issue |
00:03.39 | grummund | maybe, i had the same issue with plain sip.conf and got it fixed but forget how ;-/ |
00:04.04 | Kobaz | it's good to keep notes on what works and what doesn't |
00:04.13 | grummund | yeah ;-) |
00:04.18 | *** join/#asterisk sinaowolabi (~Sina@102.134.114.1) |
00:04.41 | grummund | the history of changes in is svn, but somehow that point was missed. |
00:05.32 | grummund | so i was inspecting the INVITE packet and wondering what to see there. |
00:06.11 | Kobaz | you'll see the from, the to, and the SDP which sets up media |
00:06.40 | Kobaz | anything you ITSP needs to create a call will be in there, including authentication (encrypted using challenge-response) |
00:06.54 | grummund | does authentication happen there? (reason for my orginal question) |
00:06.55 | Kobaz | the very first INVITE, is typically unauthenticated |
00:07.00 | grummund | ok ok |
00:07.27 | Kobaz | which will provide you with the nonce token that the auth will be generated from in the second invite |
00:07.33 | Kobaz | that's why you need the first one |
00:08.07 | Kobaz | some systems try and short cut it, by storing an old nonce and sending an authenticated first invite, which can work, but asterisk will complain |
00:08.46 | grummund | that may explain why the provider's test number works fine |
00:09.01 | grummund | (which is kind of ironic) |
00:09.55 | Kobaz | it's better to know for sure... if you paste up some logs (dpaste is good), someone can figure it out |
00:11.46 | grummund | will do, i just wanna be careful not to post any credentials... |
00:12.06 | Kobaz | you wont |
00:12.17 | grummund | that's the INVITE - http://paste.debian.net/1181038/ |
00:12.25 | Kobaz | if you're showing just logs, none of the password information would show up, it's encrypted |
00:12.36 | Kobaz | but you can xx out usernames or some of the ip address if you're paranoid |
00:12.59 | Kobaz | o=- 310657538 310657538 IN IP4 11.22.33.44 |
00:13.05 | Kobaz | is that a real public ip there, in the real log |
00:13.18 | grummund | no, but the rest is verbatim. |
00:13.34 | Kobaz | that's a problem |
00:14.00 | Kobaz | you're talking to a public ITSP, and giving it an incorrect media address to send you audio |
00:14.04 | Kobaz | if that's the case |
00:14.25 | Samot | This the completed test number call? |
00:14.39 | Kobaz | it may be treating you as a NAT'd peer |
00:14.44 | Kobaz | and ignoring your SDP media ip |
00:15.37 | Kobaz | grummund: that's the INVITE that your provider sends an OK for? |
00:15.38 | grummund | wait, ignore the 11.22.33.44 (/me should have put xx.xx.xx.xx) |
00:15.52 | Kobaz | if you're paranoid just change one part |
00:15.59 | grummund | everything else is exactly as per the log |
00:16.02 | Samot | Is this the test number invite? |
00:16.03 | Kobaz | xx.128.44.45 |
00:16.07 | Kobaz | or whatever |
00:16.10 | Kobaz | so it looks legit |
00:16.12 | Samot | grummund: ^^ |
00:16.21 | grummund | ok wait |
00:16.45 | Samot | Is 154 the test number? |
00:17.11 | Kobaz | grummund: remember how it sends one unauthenticated invite and one with auth... are you showing us the wrong one? |
00:17.32 | Samot | Can I get an answer? |
00:17.34 | Kobaz | although the SDP media and etc should be basically the same rules in the second one, but it's nice to work with the *actual* invite |
00:17.50 | grummund | 154 is for "Balance check". |
00:17.53 | grummund | 155 is the test number (it reads back saying succefully setup). |
00:18.00 | Samot | Ok and that works? |
00:18.34 | Samot | grummund: have you tried presenting proper caller id? |
00:18.40 | grummund | 155 works, all others appear to get so far then receive a BYE. |
00:18.48 | Kobaz | yeah could be callerid |
00:18.59 | Samot | 1 is not valid |
00:19.10 | grummund | 1 is the internal extension no. |
00:19.30 | Samot | Then you need proper callerid for PSTN calls |
00:19.50 | grummund | fwiw, not plain old sip.conf and the same account. |
00:19.51 | Kobaz | you'll want some form of 'From:' or pai or ppi or rpi for callerid |
00:19.56 | Samot | You should have the basics covered first |
00:20.31 | Samot | Before going off on SDP |
00:20.48 | grummund | so, it's working with sip.conf and didn't need the callerid there. |
00:20.49 | Kobaz | Samot: that was glaring at me, without even looking at anything else |
00:21.12 | Samot | Pjsip is not the same |
00:21.22 | Samot | Well show a failed call |
00:21.25 | Samot | In full |
00:21.32 | Samot | Lets see what actually happens |
00:21.51 | grummund | is the Contact: ok? "asterisk" happens to be the name of the box it is running on. |
00:22.03 | Samot | A single INVITE doesnt paint the whole picture |
00:22.16 | Samot | Show a call that doesnt complete |
00:22.28 | Samot | Full call |
00:22.54 | grummund | ok, but the callerid should be fixed first |
00:23.03 | Samot | Just show it as is |
00:31.30 | *** join/#asterisk pppingme (~pppingme@unaffiliated/pppingme) |
00:31.53 | *** join/#asterisk nix8n82 (~AndChat19@205-170-75-78.dia.static.qwest.net) |
00:37.14 | grummund | this is the call that fails - http://paste.debian.net/1181042/ |
00:44.16 | grummund | maybe something obvious in the config - http://paste.debian.net/1181043/ |
00:44.49 | grummund | fwiw, incoming calls succeed. |
00:46.14 | file | add from_user=<username> to the endpoint. |
00:46.19 | Samot | Should there be a from user? |
00:46.24 | Samot | Yeah..that |
00:48.29 | grummund | that works |
00:50.10 | grummund | in the INVITE, From: and Contact: both now have the username@... |
00:50.14 | Samot | Right, because that setting takes that 1 in the from header and replaces it with whatever from_user is |
00:50.42 | grummund | thanks |
00:51.03 | grummund | that's it's kinda where i started from ;) |
01:01.25 | *** join/#asterisk fstd_ (~fstd@unaffiliated/fisted) |
01:03.05 | *** join/#asterisk drathir_tor (~drathir@gateway/tor-sasl/drathir) |
01:04.42 | *** join/#asterisk EmleyMoor (42b789682f@firthpark.tinsleyviaduct.com) |
01:18.51 | *** join/#asterisk sinaowolabi (~Sina@102.134.114.1) |
02:19.36 | *** join/#asterisk sinaowolabi (~Sina@102.134.114.1) |
02:37.47 | *** join/#asterisk tsal (~tsal@i59F4A013.versanet.de) |
02:39.09 | *** join/#asterisk aness (~aness@cm-84.209.131.103.getinternet.no) |
02:43.58 | *** join/#asterisk aness (~aness@cm-84.209.131.103.getinternet.no) |
02:48.37 | *** join/#asterisk sinaowolabi (~Sina@169.159.69.42) |
02:48.38 | *** join/#asterisk aness (~aness@cm-84.209.131.103.getinternet.no) |
02:52.53 | *** join/#asterisk aness (~aness@cm-84.209.131.103.getinternet.no) |
02:55.48 | *** join/#asterisk aness (~aness@cm-84.209.131.103.getinternet.no) |
02:58.00 | *** join/#asterisk zgu (~steve@2603-7080-b744-4900-16ad-d120-de49-dc8b.res6.spectrum.com) |
02:58.44 | *** join/#asterisk aness (~aness@cm-84.209.131.103.getinternet.no) |
03:01.44 | *** join/#asterisk aness (~aness@cm-84.209.131.103.getinternet.no) |
03:05.14 | *** join/#asterisk aness (~aness@cm-84.209.131.103.getinternet.no) |
03:08.09 | *** join/#asterisk aness (~aness@cm-84.209.131.103.getinternet.no) |
03:12.42 | *** join/#asterisk aness (~aness@cm-84.209.131.103.getinternet.no) |
03:13.01 | *** join/#asterisk pvoigt (~Linux@unaffiliated/pvoigt) |
03:14.27 | *** join/#asterisk aness (~aness@cm-84.209.131.103.getinternet.no) |
03:18.42 | *** join/#asterisk aness (~aness@cm-84.209.131.103.getinternet.no) |
03:21.52 | *** join/#asterisk aness (~aness@cm-84.209.131.103.getinternet.no) |
03:25.02 | *** join/#asterisk aness (~aness@cm-84.209.131.103.getinternet.no) |
03:26.27 | *** join/#asterisk aness (~aness@cm-84.209.131.103.getinternet.no) |
03:29.29 | *** join/#asterisk aness (~aness@cm-84.209.131.103.getinternet.no) |
03:32.39 | *** join/#asterisk aness (~aness@cm-84.209.131.103.getinternet.no) |
03:35.44 | *** join/#asterisk aness (~aness@cm-84.209.131.103.getinternet.no) |
03:40.34 | *** join/#asterisk aness (~aness@cm-84.209.131.103.getinternet.no) |
03:42.47 | *** join/#asterisk electronic_eel_ (~quassel@213.240.182.13) |
03:43.34 | *** join/#asterisk aness (~aness@cm-84.209.131.103.getinternet.no) |
03:46.49 | *** join/#asterisk aness (~aness@cm-84.209.131.103.getinternet.no) |
03:49.59 | *** join/#asterisk aness (~aness@cm-84.209.131.103.getinternet.no) |
03:53.14 | *** join/#asterisk aness (~aness@cm-84.209.131.103.getinternet.no) |
03:56.24 | *** join/#asterisk aness (~aness@cm-84.209.131.103.getinternet.no) |
03:59.34 | *** join/#asterisk aness (~aness@cm-84.209.131.103.getinternet.no) |
04:03.04 | *** join/#asterisk aness (~aness@cm-84.209.131.103.getinternet.no) |
04:06.09 | *** join/#asterisk aness (~aness@cm-84.209.131.103.getinternet.no) |
04:09.34 | *** join/#asterisk aness (~aness@cm-84.209.131.103.getinternet.no) |
04:12.34 | *** join/#asterisk aness (~aness@cm-84.209.131.103.getinternet.no) |
05:06.06 | *** join/#asterisk electronic_eel (~quassel@dslb-088-066-187-171.088.066.pools.vodafone-ip.de) |
05:23.39 | *** join/#asterisk ckb (~ckb@unaffiliated/ckb) |
05:23.53 | ckb | hey guys is there a way I can hook into 911 calls?\ |
06:06.44 | *** join/#asterisk hfb (~hfb@cpe-75-82-92-216.socal.res.rr.com) |
06:10.16 | *** join/#asterisk electronic_eel_ (~quassel@213.240.182.52) |
06:11.00 | jkroon | Kobaz, we store recordings long term on gluster, and yes we did run into the sqlite blocking stuff, ramdisk sorted that out. |
06:24.10 | jkroon | Kobaz, no, the lock wasn't our issue, the fsync() was ... with chap_sip it was (is) an absolute killer. http://jkroon.blogs.uls.co.za/it/voip/asterisk-massively-speeding-up-those-register-requests (we clocked some REGISTER frames in at over 300ms, move astdb to ramdisk, sub 1ms) |
06:25.49 | jkroon | your patch basically abandon the update after 500ms ... which is also not an acceptable solution. How frequently do you hit that abandon? |
06:29.42 | jkroon | ckb, depends on what you mean with "hook into" |
07:05.06 | *** join/#asterisk mmlj4 (~mmlj4@ip174-69-111-70.no.no.cox.net) |
07:17.12 | *** join/#asterisk FH_thecat (~FH_thecat@75.11.25.212.ftth.as8758.net) |
07:21.16 | *** join/#asterisk electronic_eel (~quassel@213.240.182.52) |
07:33.30 | *** join/#asterisk aness (~aness@cm-84.209.131.103.getinternet.no) |
07:35.46 | *** join/#asterisk mmlj4 (~mmlj4@ip174-69-111-70.no.no.cox.net) |
07:37.03 | *** join/#asterisk mmlj4 (~mmlj4@ip174-69-111-70.no.no.cox.net) |
07:56.42 | *** join/#asterisk sa02irc (~mbax@155-079-043-212.ip-addr.inexio.net) |
08:02.16 | *** join/#asterisk retentiveboy (~retentive@2601:cf:4500:5ea3:509f:3ecd:4bbe:e783) |
08:10.03 | *** join/#asterisk AndChat|19361 (~AndChat19@2600:100e:b05d:c7bf:4d0c:ad13:76cf:6d56) |
08:17.46 | *** join/#asterisk spatel (~spatel@pool-96-237-230-175.bstnma.fios.verizon.net) |
08:28.05 | *** join/#asterisk drathir_tor (~drathir@gateway/tor-sasl/drathir) |
09:13.54 | *** join/#asterisk puzzola (~puzzola@unaffiliated/puzzola) |
09:15.21 | *** join/#asterisk sinaowolabi (~Sina@169.159.125.133) |
09:18.20 | *** join/#asterisk nix8n82 (~AndChat19@205-170-75-78.dia.static.qwest.net) |
09:21.37 | *** join/#asterisk Dovid (~dovid@ool-2f10fda7.dyn.optonline.net) |
09:28.57 | *** join/#asterisk sinaowolabi (~Sina@169.159.125.133) |
09:39.23 | *** join/#asterisk AndChat|19361 (~AndChat19@2600:100e:b05d:c7bf:34b8:f256:1430:5d2e) |
10:07.50 | *** join/#asterisk drathir_tor (~drathir@gateway/tor-sasl/drathir) |
10:08.39 | *** join/#asterisk ih8wndz (jwpierce3@mail.zero.svr.trnkmstr.com) |
10:12.28 | ckb | jkroon, sorry I was in the matrix, are you still here? |
10:14.26 | ckb | I'm asking if there's a way I can have a webhook whenever asterisk outbounds to emergency? |
10:18.18 | jkroon | ckb, i am |
10:18.26 | jkroon | CURL() |
10:19.12 | jkroon | asterisk -rx "core show function CURL" should tell you what you need to know. |
10:19.21 | ckb | I know what curl is, but that's vague |
10:19.30 | ckb | ah ok |
10:19.52 | ckb | will that give me every ongoing call? |
10:21.31 | ckb | jkroon, this is just a curl function built into asterisk? |
10:21.52 | ckb | how does this show me that a 911 call was places? |
10:22.00 | ckb | s/places/placed |
10:22.18 | kjetilho | you can put all sorts of actions into your dialplan |
10:22.55 | ckb | I'm actually trying to learn how to create a dialplan syntax. |
10:23.33 | ckb | kjetilho, I tried adding something to the config, but it didn't work. (I possibly could have not reloaded it) |
10:25.27 | ckb | I will say that I think I reloaded FreePBX with a new "extension" and it didn't show up in the FreePBX GUI. |
10:25.53 | ckb | So, without to say, I'm new to this and would love all the help I can get. |
10:27.18 | ckb | And I'm not inept, and can definitely understand, but after a year of working for this company, I just found out about both Asterisk and FPBX CLI.. |
10:28.54 | ckb | I also don't get how asterisk's cli "curl" can help solve my question? |
10:30.18 | file | Asterisk itself doesn't have "webhooks" for specific actions, it doesn't even have a concept of emergency calls, those are all things that something higher up create (such as FreePBX, or individual users) |
10:30.32 | file | Asterisk gives the primitives, the building blocks, and then those get used |
10:31.02 | *** join/#asterisk drathir_tor (~drathir@gateway/tor-sasl/drathir) |
10:31.04 | ckb | file, understood. it's primitive. |
10:31.34 | ckb | can I get help understanding the syntax of an "extension"? |
10:31.49 | file | that depends what you mean by extension |
10:32.00 | ckb | well... |
10:32.02 | file | since you're using FreePBX, it has its own definition in the GUI |
10:32.08 | file | but there's also a definition for Asterisk in the dialplan |
10:32.27 | file | within the dialplan an extension is a set of steps/instructions which are executed when a call is placed to it |
10:33.06 | ckb | I was already chastised for calling "extensions" as they are |
10:33.35 | ckb | realistically they're just aliases? |
10:33.45 | file | I told you what an extension within the dialplan is |
10:34.01 | file | it's literally a set of steps - "do this, do this next, then that" etc |
10:34.41 | ckb | okay, I halfway understand this.\ |
10:34.55 | ckb | as a call and "extension" is what someone dials. |
10:35.07 | ckb | how does this differ? |
10:35.31 | file | depends on what you mean by "extension" within that context |
10:35.56 | file | device dials extension 1000 |
10:36.04 | ckb | I dial "47458589" during the call |
10:36.07 | file | instructions for extension 1000 in the dialplan may include dialing another device |
10:36.40 | ckb | I'm literally trying to understand this, so bare with me, please :( |
10:37.32 | ckb | Asterisk picks up the call, plays a system message "Dial x for y, z for a, y for b" |
10:37.42 | ckb | x z and y would be what? |
10:37.58 | file | extensions in the dialplan, which execute other logic |
10:38.14 | file | or it could be done a different way, yet again with dialplan logic |
10:38.38 | ckb | I'm pretty sure we're dealing with extremely simple logic rn |
10:38.50 | file | the only association between an extension you dial (or an option) is through the dialplan which is controlled by either an individual or something else (like FreePBX) |
10:39.07 | file | Asterisk comes as blank slate, the logic is written |
10:39.15 | ckb | (I'm trying to move my company away from FreePBX) |
10:39.28 | ckb | this is why I'm asking for help |
10:40.25 | ckb | so in this case x, z, y are extensions? |
10:40.35 | file | that is the most common way to do it, yet |
10:40.36 | file | er yes |
10:41.39 | ckb | okay so if we're using FPBX, would I use extensions_custom.conf? |
10:41.52 | file | I don't work on FreePBX or know it |
10:42.10 | ckb | meh |
10:42.25 | ckb | extensions_override_freepbx.conf is literally an override? |
10:42.54 | ckb | Also, what is the best way for me to learn the syntax of Asterisk? |
10:42.54 | file | yet again, I don't work on FreePBX or know it |
10:43.22 | file | the book covers stuff, an old version is at asteriskdocs.org but dialplan hasn't changed |
10:43.25 | ckb | and does asterisk need to be restarted if you edit extensions.conf? |
10:43.35 | file | no, it just has to be reloaded |
10:44.08 | ckb | so, could you give me a sample of what I'm trying to do? |
10:44.16 | jkroon | ckb, http://ftp.openbsd.org/pub/OpenBSD/distfiles/9780596510480.pdf <-- i can highly recommend this book ... just see if you can find a newer version of it. |
10:44.21 | file | I don't have a sample handy |
10:44.33 | ckb | outbound to 911 -> CURL(URL)? |
10:45.11 | jkroon | ckb, extension ????,n,NoOP(CURL(https://someserver/some_path?cli=${CALLERID(all)})) |
10:45.35 | jkroon | ckb, it depends on what's already there and how you're integrating into it. |
10:45.37 | ckb | jkroon, I think I can work with that. |
10:46.04 | jkroon | this is very much like how do you explain programming/software development to someone who has never worked with computers. where do you start? |
10:46.56 | ckb | jkroon, I have been a developer for almost 24 years (since I was 8) but this cli and asterisk config is brand new to me |
10:47.41 | ckb | just trying to get basics before I dive into the docs, that's all |
10:48.28 | ckb | in my conf it's exten => ? |
10:48.59 | ckb | what is exten => _.,....? |
10:49.25 | ckb | what is exten => s,....? |
10:50.27 | kjetilho | "<ckb> just trying to get basics before I dive into the docs, that's all" *facepalm* |
10:50.39 | kjetilho | that is the most ass-backwards thing I have heard today |
10:50.46 | ckb | kjetilho, it's simple questions :( |
10:51.02 | kjetilho | simple questions tend to be answered in books ... |
10:52.16 | file | http://asteriskdocs.org/en/3rd_Edition/asterisk-book-html-chunk/asterisk-DP-Basics.html |
10:52.19 | ckb | could be much easier answered by someone than having to dive through 20 paragraphs |
10:52.56 | kjetilho | 20 paragraphs. oh my, I feel your pain |
10:53.38 | ckb | you know.. I could ask why you're even in a help channel. |
10:53.52 | ckb | But I will go read, fine. |
10:55.04 | *** join/#asterisk forgotmynick (uid24625@gateway/web/irccloud.com/x-bafusfqwfpnbuvit) |
10:55.55 | jkroon | ckb, read the above book, if you've been developing that long you'll catch onto it very quickly, or perhaps you might be more comfortable with the LUA dialplan code. |
10:56.56 | jkroon | ckb, it's tricky to explain in less, if you're a dev, you'll get that, juts read the book, the channel isn't here to hand-hold you, it's here to help when you get stuck. |
10:57.02 | ckb | jkroon, I understand, and I will, I just want to get this simple project done. Do these .confs only handle incoming calls? I'm trying to deal with OUTGOING. |
10:57.33 | file | there is no difference. |
10:57.38 | ckb | In the grand scheme of things, I will have to look over this. |
10:57.51 | jkroon | incoming and outgoing is a concept that conceptual in nature only, all calls hit the dialplan upon creation of a channel, and will usually eventually create a brige to another channel. |
10:58.35 | ckb | so, if there's already 911 in FreePBX, do I need to search their configs? |
10:58.45 | jkroon | three is unlikely to be. |
10:58.53 | jkroon | since it's just a call, like any other. |
10:59.15 | jkroon | almost no one here (at least, that I'm aware of) use freepbx. |
10:59.34 | ckb | (I'm trying to move away from freepbx and asking for help) |
10:59.53 | jkroon | best move (in my very much not as humble as it should be) you could make. |
11:00.22 | jkroon | do you understand the concept of a channel? |
11:00.38 | ckb | I would say about 20% |
11:00.45 | ckb | this is why I'm asking for help |
11:00.56 | ckb | sighs |
11:01.10 | jkroon | channel gets created upon incoming "INVITE" (or similar if not using SIP). |
11:01.27 | ckb | we only use PJSIP and SIP |
11:01.27 | jkroon | that "channel" is then placed in the dialplan, where stuff happens, the recipe is followed. |
11:02.01 | jkroon | So you'll have say PJSIP/foo-XXXXXX that's busy executing some point in the dialplan (eg, NoOP(CURL(...))) |
11:02.09 | ckb | okay so from provider to asterisk |
11:02.15 | ckb | can we start there |
11:02.17 | jkroon | no, from ANYWHERE |
11:02.27 | jkroon | provider sends INVITE. |
11:02.57 | jkroon | chan_(sip|pjsip|iax2|h232|...) will action required authentication and then create a channel. |
11:03.14 | ckb | the channel is an "active" call? |
11:03.14 | jkroon | channel is then passed off to the dialplan to the configured context. |
11:03.25 | jkroon | well, what's a call? |
11:03.51 | jkroon | so no, channel is simply a signalling method for the most part between two parties involved in "the call" |
11:04.03 | jkroon | provider <=> pbx is one such signalling channel. |
11:04.11 | jkroon | pbx <=> phone is another such channel. |
11:04.37 | ckb | okay lets say I'm using bandwidth here |
11:04.47 | jkroon | a bridge transmits RTP (audio data) between related channels, so a bridge really links two (or more potentially) channels for audio transmission. |
11:05.14 | jkroon | how does bandwidth fit in? |
11:05.43 | ckb | I call one of bandwidths numbers, that gets sent to my asterisk server, the asterisk server then does thing (play system recordings and listens for menu options, etc) -> then dials a hardware phone |
11:06.36 | jkroon | bandwidth == provider? |
11:06.41 | ckb | idk... I've been asking him to explain these things to me, but I literally didn't know asterisk had a CLI until 2 days ago. |
11:06.53 | ckb | yes... bandwidth, twilio, whoever |
11:07.06 | jkroon | let's just call entity "provider" shall we? |
11:07.12 | jkroon | provider sends INVITE => pbx. |
11:07.13 | ckb | sure |
11:07.49 | ckb | pbx or asterisk here? |
11:07.59 | ckb | again I want to get rid of pbx |
11:08.06 | ckb | freepbx* |
11:08.19 | jkroon | depending on settings that will cause the channel driver to respond in some way resulting in one of three things (as far as I'm concerned): 1. telling the remote side to get lost, 2 telling the remote side to authenticate, or 3 ok, I'll try that (100 Trying response). |
11:08.28 | jkroon | asterisk is your pbx. |
11:08.35 | jkroon | well, the software driving your pbx. |
11:08.59 | ckb | asterisk is the unix and pbx is the linux? |
11:09.09 | ckb | right? |
11:09.37 | jkroon | linux is the OS, asterisk is akin to apache, but instead of serving web pages it does voice related stuff. |
11:09.50 | ckb | okay it was a relative remark |
11:10.06 | jkroon | in case (1) and (2) nothing further really happens, but in case (3) a channel is created and placed in the dialplan at the configured context. |
11:10.42 | ckb | the channel is a UDP connection between provider and server? |
11:11.05 | jkroon | so provider will usually To: <registered_contact@your.ip> kind of thing, so dialplan will enter into registered_contact@${context} where if context isn't configured for the SIP peer or PJSIP endpoint, is default. |
11:11.25 | jkroon | channel is a concept, and yes, a "UDP connection" is one way. |
11:12.17 | jkroon | it really is just a struct in the asterisk world (internally) with some code that determines what to do when certain events (like ANSWER) needs to be signalled, which will then send required over TCP/UDP/TLS/whatever. |
11:12.38 | ckb | right |
11:12.45 | ckb | I'm following here |
11:13.15 | ckb | so (111) 111 1111 gets delivered to asterisk |
11:13.25 | jkroon | ok, so provider has now sent INVITE and you've got a channel. dialplan determines what to do with that channel. |
11:13.34 | jkroon | Eg Playback(some&audio&files) |
11:13.48 | ckb | right |
11:13.52 | ckb | like a menu |
11:13.58 | jkroon | where the recipe started depends on the [context] the channel is placed into, and the start extension |
11:14.25 | jkroon | so inside a [context] you can have zero more more blocks of exten => _pat,s,Application |
11:14.27 | ckb | they hit "1" and then I want another menu |
11:14.42 | ckb | ooof you lost me here |
11:14.55 | jkroon | those are achieved with the Background() application. |
11:15.00 | jkroon | this is long before you get there. |
11:15.08 | ckb | yeah I need simple rn |
11:15.16 | ckb | getting ahead of myself |
11:15.25 | jkroon | no, I refuse. You can't run before you walk. |
11:15.45 | ckb | I agree 100% and I love you for helping me |
11:16.18 | jkroon | patterns can start with _ to indicate it's a pattern, eg _12[0-9] will match destinations starting with "12" followed by any digit. |
11:16.32 | ckb | OH |
11:16.35 | ckb | it's regex |
11:16.45 | ckb | kind of? |
11:16.46 | jkroon | there are special characters here, so _12X is equivalent. Z and N are also options here. |
11:17.00 | jkroon | very far from, glob is probably closer, but yes, it's similar. |
11:17.18 | ckb | _12[0-9] won't match _12X? |
11:17.28 | jkroon | no, they're equivalent. |
11:17.55 | jkroon | so one very nice hack if you're using 3-digit extensions not starting with a zero: |
11:17.58 | ckb | tbh I don't know how 12X could be a thing? |
11:18.13 | jkroon | X is shorthand for [0-9] |
11:18.21 | jkroon | N for [2-9] and Z [1-9] |
11:18.29 | ckb | oh I'm thinking actual regex |
11:18.33 | ckb | ok go go |
11:18.52 | jkroon | [my_extensions] exten => _ZXX,1,Dial(SIP/${EXTEN}) |
11:19.18 | jkroon | so anything sent to that context will match if, and only if it's a three-digit sequence, not starting with 0. |
11:19.38 | ckb | one sec |
11:19.52 | jkroon | and will result in asterisk looking for a SIP peer with a name matching that sequence, and try to connect the calling channel with that peer (using a new channel). |
11:19.59 | ckb | just reading over this |
11:20.51 | ckb | so ZXX is only 1 digit a piece? |
11:21.27 | ckb | exten => 1234132434,..... is valid? |
11:22.33 | ckb | then (I know I need to read the docs and tell me to just bugger off) what is SIP/{$EXTEN} |
11:23.06 | ckb | ALSO the ,1, |
11:24.09 | ckb | <jkroon> and will result in asterisk looking for a SIP peer with a name matching that sequence, and try to connect the calling channel with that peer (using a new channel). |
11:24.24 | ckb | so the original channel would disconnect? |
11:24.45 | jkroon | each character in the patter will match exactly 1 character yes. |
11:25.10 | jkroon | ! will match zero or more, and . will match one or more (and must be the last character in the pattern afaik) |
11:25.26 | ckb | ! = 1? |
11:25.27 | *** join/#asterisk spatel (~spatel@pool-96-237-230-175.bstnma.fios.verizon.net) |
11:26.06 | jkroon | ,1, is the priority, so for each pattern the priorities are executed sequentially, starting at 1. |
11:26.07 | ckb | _ZXX,1, <<<<<<< this |
11:26.15 | ckb | gotcha |
11:26.18 | ckb | I know this |
11:26.23 | jkroon | ! and . can form part of the pattern. |
11:26.53 | jkroon | eg, _Z. is in regex terms: ^[1-9].+$ where _Z! is ^[1-9].*$ |
11:26.59 | ckb | okay the SIP/{$EXTEN} is the last |
11:27.16 | ckb | then I think I'm okay, I will likely be back |
11:27.41 | ckb | PJSIP and SIP is what I'm dealing with right now |
11:27.52 | jkroon | that's the syntax for channels, in this case it tells Dial() to get the SIP channel driver to create a channel to a peer called ${EXTEN} where ${EXTEN} is a variable containing the currently executing extension. |
11:27.53 | ckb | (I would love to know the difference) |
11:28.07 | jkroon | two different channel drivers both implementing SIP. |
11:28.28 | jkroon | you should probably prefer PJSIP over SIP unless you have a very specific reason to use chan_sip rather than chan_pjsip. |
11:28.34 | ckb | from what I know multiple devices on PJSIP and one on SIP |
11:28.57 | jkroon | multiple Contact's (AORs) on PJSIP per endpoint. |
11:29.12 | jkroon | But you need to specifically adjust Dialplan() to use all of them instead of only the firt. |
11:29.14 | jkroon | But you need to specifically adjust Dialplan() to use all of them instead of only the first. |
11:29.24 | ckb | PJSIP 1:N and SIP 1:1? |
11:29.30 | jkroon | ok, that's worded badly. |
11:29.59 | jkroon | PJSIP supports multiple registrations per endpoint yes, chan_sip only one. so 1:N and 1:1 is one way of looking at it yes. |
11:30.18 | ckb | okay that's what I understand |
11:30.35 | ckb | soooo |
11:30.51 | ckb | when it finds that new "channel" does it kill the old channel? |
11:31.02 | ckb | what specifically is a channel? just a UDP connection? |
11:31.16 | ckb | UDP from provider -> server -> device? |
11:31.40 | ckb | 2 channels in a sip situation? |
11:31.50 | jkroon | no, you can have multiple channels on the same udp/tcp connection. |
11:32.15 | jkroon | i guess one of the stranger ways to think of a channel is a "half call" |
11:32.23 | jkroon | or "one leg of a call" |
11:32.55 | ckb | well yes, but a single call.... will have a channel to the provider (brandwidth)... then bandwidth to server.... then server to hardware? |
11:33.15 | jkroon | if you think in terms of a traditional pure analog PBX ... a channel would be a pair of wires capable of carrying exactly one call between two directly connected parties. |
11:33.55 | jkroon | so in the case of the PBX a channel would be that pair of wires to an extension, or to the PSTN provider. |
11:33.56 | ckb | and then swapping switches like old school operators? |
11:34.15 | jkroon | Now enters ISDN and suddenly you can have multiple (2 or 30) channels on the same pair of wires. |
11:34.29 | ckb | (DSL) |
11:34.45 | jkroon | yes, if you want to go back that far, a "bridge" would be exactly that, a set of wires inserted between two channels. |
11:35.08 | ckb | I went to GT and built an 8 bit computer using a breadboard |
11:35.12 | ckb | plz :D |
11:35.14 | ckb | D: |
11:35.37 | jkroon | ISDN => SIP|IAX|H.232 and suddenly that single "connection" can carry signalling for N channels, where N can be a really large number. |
11:35.44 | jkroon | ok, i've got to go now. |
11:35.55 | jkroon | cheers, read the book. it really explains it better than I ever could. |
11:35.58 | ckb | jkroon, thank you so much |
11:36.20 | ckb | jkroon, you helped me much more than trying to read a text book |
11:36.28 | ckb | jkroon, you're the best. |
11:38.27 | jkroon | pleasure, but still read the book, it'll clarify a few things. |
11:39.22 | ckb | jkroon, I already said I need to, just wanted the basics. |
11:39.56 | jkroon | I'm just making sure you truly realize that. |
11:39.58 | ckb | jkroon, you gave me a nitrous boost |
11:40.17 | ckb | jkroon, I think I can get it from here. Thank you. |
11:40.42 | ckb | and I likely will be back but not like this |
11:41.07 | ckb | <3 |
11:42.55 | ckb | jkroon, actually, one last question, how does this apply to outbound calls? don't need to get in depth |
11:43.46 | ckb | and can you have multiple "contexts" for "extensions" |
11:43.50 | jkroon | as myself and file have said, there is no difference between inbound and outbound. they're the same thing. |
11:44.20 | ckb | so 911 as a context would STILL apply? |
11:44.37 | jkroon | in your head - please take a really, really big imaginary gun, and take aim at the concept of inbound vs outbound. |
11:44.39 | ckb | if someone called in and dialed 911 |
11:45.01 | jkroon | well, your ITSP will send the call To: <foo@your.ip> |
11:45.13 | jkroon | an extension will use To: <911@your.ip> |
11:45.20 | ckb | I call my asterisk server and dial 911, and it'll do the same as if a hardware phone dialed 911? |
11:45.37 | ckb | ITSP? |
11:45.45 | jkroon | depends on the contexts that you place incoming channels into. |
11:46.06 | jkroon | oh, I think of channels as incoming or outgoing (as seen from the perspective of the server/pbx/asterisk) |
11:46.11 | ckb | but you said they were the same? |
11:46.21 | jkroon | so a channel gets created due to external action towards asterisk (incoming INVITE) |
11:46.26 | jkroon | ^^ incoming channel |
11:46.30 | ckb | ok |
11:46.39 | ckb | I'm looking to hook into outgoing 911\ |
11:46.44 | ckb | zzzz |
11:46.44 | jkroon | or a channel gets created as a result of something happening in the dialplan - outgoing channel. |
11:47.09 | ckb | what's the difference? can we go over that real quick? |
11:47.19 | ckb | or just give me a sample or a link? |
11:47.48 | ckb | I want to make a webhook (CURL) whenever 911 gets dialed |
11:47.56 | ckb | very simple |
11:48.25 | ckb | (send a text when 911 gets dialed from any SIP/PJSIP) |
11:48.41 | ckb | that was my original question, tbh |
11:49.41 | ckb | (what you already gave me is worth 100 years of my life, but we went down a rabbit hole when I just wanted this answered) |
11:50.13 | ckb | also if you PM a cashapp, I'll send you some dollas |
11:52.26 | ckb | jkroon ^^^ |
11:53.26 | jkroon | ckb, sorry man, what I would suggest, enable the full log, and look at what gets generated when you make calls. |
11:53.36 | jkroon | it logs exactly each application being executed. |
11:53.51 | jkroon | that way you can find the best place to adjust the dialplan to add the CURL() call. |
11:54.00 | ckb | jkroon, I just want something executed upon dial? |
11:54.15 | ckb | is that not a thing? |
11:54.17 | jkroon | you want something executed from the dialplan, prior to Dial() |
11:54.48 | ckb | outbound calling is still in the conf, jkroon ? |
11:54.48 | jkroon | incoming channel will start executing in the dialplan, once you hit Dial() the outgoing channel will be created, and if that answers the two channels will be bridged. |
11:54.59 | jkroon | all dialing is in the conf. |
11:55.22 | ckb | jkroon, ok I shall research |
11:55.38 | ckb | jkroon, if you would like a donation, pm me |
11:55.43 | ckb | jkroon, thank you |
11:56.09 | jkroon | others have over the last 15 years helped me, and so my request is this: pay it forward by helping others. |
11:56.40 | ckb | jkroon, what would an outbound conf look like? |
11:56.54 | ckb | context... |
11:57.13 | jkroon | i gave you an example above. outbound to extensions most likely. |
11:57.34 | jkroon | again, don't think of inbound/outbound CALL, think in terms of inbound/outbound CHANNELS |
11:57.55 | jkroon | ALL inbound channels executes the dialplan. |
11:58.09 | jkroon | ALL outbound channels are as a result of Dial() application. |
11:58.14 | ckb | but yes. hardware phone -> asterisk -> bandwidth -> receiving -> phone |
11:58.47 | jkroon | [make_em_go_out] exten => _0X.,1,Dial(PJSIP/bandwidth/${EXTEN:1}) |
11:59.07 | jkroon | very simple and very much insufficient, but probably working, example. |
11:59.08 | ckb | oh wait |
11:59.37 | ckb | exten => ????,PRIORITY,CMD |
11:59.49 | ckb | doesn't matter in or out? |
12:00.04 | jkroon | that's what we've been saying. |
12:00.18 | ckb | jkroon, shit I love you |
12:00.19 | jkroon | it's about matching the patterns in the context, which will then execute CMDs in PRIORITY order. |
12:00.24 | ckb | I will pay this forward |
12:00.44 | ckb | I thought .conf was only inbound |
12:01.01 | ckb | one last question jkroon |
12:01.19 | ckb | do I need to search for the 911 in current configs? |
12:01.27 | ckb | are they overwritable? |
12:01.55 | ckb | I guess that's a FPBX question but maybe you know |
12:02.20 | jkroon | from my perspective, yes, all configs are just that, configs, from a freepbx perspective ... be careful. Most of them will get regenerated as far as I know. |
12:02.35 | ckb | ok one sec |
12:02.49 | jkroon | IIRC (2007) you should only customer files with _custom in the name. |
12:03.10 | jkroon | that never did sit well with me. |
12:03.31 | ckb | I have 4 files |
12:06.37 | ckb | jkroon, I found an article online that said edit a file... pretty sure (just being deductive) is extensions_override_freepbx.conf |
12:07.52 | ckb | I have extensions_additional.conf extensions.conf extensions_custom.conf and extensions_override_freepbx.conf |
12:08.06 | jkroon | ckb, ¯\_(ã)_/¯ |
12:08.11 | grummund | Do i understand this correctly? - for a device to register with us, then in pjsip.conf 1) the ['endpoint'] and ['aor'] sections must share the same name, and 2) that name being the user id the device registers as. |
12:08.36 | ckb | jkroon, will I need to restart? or something after I make changes? |
12:08.54 | ckb | reload? or idk |
12:08.55 | jkroon | asterisk -rx reload should be adequate. |
12:09.10 | ckb | jkroon, okay thank you so much. love you |
12:11.00 | file | grummund: depends on the endpoint itself, when a REGISTER occurs it says "add my contact to this AOR", and some endpoints for simplicity just assume that the AOR is the same name as the username and such |
12:11.57 | *** join/#asterisk gerhard7 (~gerhard7@86-87-238-48.fixed.kpn.net) |
12:11.58 | grummund | file: thanks that resolves some confusion |
12:13.31 | grummund | is that the difference between 'User ID' and 'Auth ID' on the phone? |
12:14.02 | file | probably? but you're asking a phone behavior question there, of how exactly they are used |
12:14.20 | file | User ID might go into the "From" header while Auth ID is used for the actual authentication |
12:14.39 | grummund | some experimentation requied |
12:16.40 | *** join/#asterisk drathir_tor (~drathir@gateway/tor-sasl/drathir) |
12:40.14 | *** join/#asterisk drathir_tor (~drathir@gateway/tor-sasl/drathir) |
13:06.20 | *** join/#asterisk post-factum (~post-fact@vulcan.natalenko.name) |
13:06.43 | *** join/#asterisk aness (~aness@cm-84.209.131.103.getinternet.no) |
13:13.42 | *** join/#asterisk spatel (~spatel@pool-96-237-230-175.bstnma.fios.verizon.net) |
13:25.35 | *** join/#asterisk paulgrmn (~paulgrmn@c-98-250-183-21.hsd1.mi.comcast.net) |
13:51.00 | *** join/#asterisk mmlj4 (~mmlj4@ip174-69-111-70.no.no.cox.net) |
14:00.46 | *** join/#asterisk spatel (~spatel@pool-96-237-230-175.bstnma.fios.verizon.net) |
14:04.11 | *** join/#asterisk overyander (~overyande@216.163.21.11) |
14:13.07 | *** join/#asterisk Ner0Zer0 (~Ner0Zer0@87.253.63.54) |
14:18.57 | Samot | Auth ID is only used when Auth is required. |
14:19.34 | Samot | It is pretty rare to see the User ID (from user) and Auth ID be different these days. |
14:32.48 | *** join/#asterisk mmlj4 (~mmlj4@ip174-69-111-70.no.no.cox.net) |
14:40.33 | *** join/#asterisk gerhard7 (~gerhard7@86-87-238-48.fixed.kpn.net) |
14:50.58 | *** join/#asterisk bford (uid283514@gateway/web/irccloud.com/x-cgbroyjhprqhpomz) |
14:50.58 | *** mode/#asterisk [+o bford] by ChanServ |
14:53.05 | *** join/#asterisk kharwell (uid358942@gateway/web/irccloud.com/x-mhrvhzxyyegkaopl) |
14:53.05 | *** mode/#asterisk [+o kharwell] by ChanServ |
14:54.52 | ckb | okay guys I have a question about additional config |
14:56.11 | ckb | exten => 11111111111,2,curl(https://worker.domain.co/test.php) |
14:57.05 | ckb | as like an extra config /etc/asterisk/extensions_override_freepbx.conf |
14:57.40 | ckb | I've tried fwconsole reload and /etc/asterisk/extensions_override_freepbx.conf |
14:57.46 | ckb | errr |
14:58.00 | ckb | asterisk -x "core restart now" |
15:02.26 | Samot | Is that the only line/ |
15:04.04 | ckb | yea? |
15:04.12 | ckb | I don't know how else to do it |
15:04.34 | ckb | HALP |
15:05.45 | *** join/#asterisk mmlj4 (~mmlj4@ip174-69-111-70.no.no.cox.net) |
15:14.26 | Samot | Well it needs a priority of 1 |
15:14.48 | Samot | Like any other dialplan context |
15:39.32 | *** join/#asterisk CatCow97 (~mine9@c-73-96-109-206.hsd1.or.comcast.net) |
15:40.47 | ckb | Samot, but there's already a priority 1 |
15:42.40 | Samot | I asked if that was the only line |
15:42.45 | Samot | You said yes |
16:26.09 | *** join/#asterisk hfb (~hfb@47.139.22.184) |
16:43.17 | *** join/#asterisk yokel (~yokel@unaffiliated/contempt) |
16:43.18 | *** join/#asterisk overyander (~overyande@216.163.21.11) |
16:52.39 | grummund | Is it normal to set 'from_domain' on a siptrunk endpoint to the provider's own domain name? |
16:58.08 | grummund | putting 'from_domain=asterisk' works just as well, afaict. |
16:58.48 | jkroon | grummund, yes it is, and sometimes required, usually not, depends on the provider. |
16:58.52 | grummund | without it, the internal ip addr appears in the invite message. |
16:59.15 | *** join/#asterisk nix8n82 (~AndChat19@2600:100e:b043:7500:b5da:73c5:587c:5d91) |
16:59.18 | jkroon | eg, they could have an SBC that dispatches to internal hosts based on that domain name or something. |
17:00.03 | grummund | i see, thanks. |
17:01.10 | grummund | hmm, but it would be more sensible for them to use the To: field, no? |
17:01.56 | ckb | <PROTECTED> |
17:02.00 | ckb | what |
17:02.22 | ckb | disregard <3 |
17:03.28 | *** join/#asterisk drathir_tor (~drathir@gateway/tor-sasl/drathir) |
17:03.34 | Samot | grummund: To check the from/sender details? No. |
17:07.11 | grummund | Samot: no, to do what jkroon said. |
17:14.49 | *** join/#asterisk hfb (~hfb@45.152.182.239) |
17:15.31 | Samot | grummund: Not really. They could be routing on the from domain. |
17:23.09 | *** join/#asterisk gerhard7 (~gerhard7@86-87-238-48.fixed.kpn.net) |
17:36.33 | grummund | Samot: it seems counter intuitive to set the From: domain to the entity you are sending to. |
17:37.03 | Samot | No, it does not. |
17:37.19 | grummund | to me, it does. |
17:37.25 | grummund | hence the question ;-) |
17:37.35 | Samot | It's part of security as well. |
17:38.32 | Samot | It proves you are who are you. |
17:39.05 | grummund | wonders if we are talking cross-purposes |
17:39.45 | Samot | Well, the TO header is generally not used for this kind of stuff. |
17:40.00 | Samot | Because the TO header contains the original digits. |
17:40.16 | Samot | Not the manipulated/final digits. |
17:41.07 | Samot | So if you dial 1234567 and they want +1234567 and you are prepending that + before you send it out... |
17:41.13 | Samot | The TO will be 1234567 |
17:41.22 | Samot | The INVITE/REQUEST will be +1234567 |
17:44.56 | grummund | INVITE, From:, and To: all have the same domain. |
17:45.10 | grummund | that is normal? |
17:45.39 | Samot | It can be, yes. |
17:54.08 | file | as with many things in SIP, usage and how stuff appears is not standard/consistent |
17:56.37 | *** join/#asterisk scampbell (~scampbell@mail.scampbell.net) |
17:57.02 | grummund | has the 'sip' side of things pretty much all done now |
18:01.03 | *** join/#asterisk hfb (~hfb@47.139.16.87) |
18:39.18 | *** join/#asterisk drathir_tor (~drathir@gateway/tor-sasl/drathir) |
18:41.17 | grummund | Is 'allow=alaw,ulaw' a thing, or must the options be defined on separate lines? |
18:41.56 | grummund | it does seem to work, but unable to find the documentation saying so. |
18:42.54 | Samot | Yes, it is. |
18:44.06 | avb | guys will json parsing ever go to asterisk core? :) |
18:44.14 | avb | something like https://github.com/drivefast/asterisk-res_json |
18:52.07 | file | if someone contributed something and it was reviewed, it could |
18:52.49 | avb | interesting |
18:53.32 | avb | ill test out in prod this module and will engage my guy in upstreaming |
18:53.46 | avb | file: can I ping you once its done? :) |
18:53.58 | file | did you write the code? |
18:54.37 | avb | nop, but my team say they are pretty much comfortable maintaining it |
18:55.19 | file | it can't be accepted without a license agreement from original author |
18:55.25 | avb | the only concern I have with this code is that its shipping cJSON with it, i believe that will be a problem with upstreaming it? |
18:55.25 | file | as you do not have the right to license it on their behalf |
18:55.52 | avb | i can try to contact an author if he dont mind |
18:56.29 | avb | and in reality I do not see many problems writting a module from scratch if you think it can be upstreamed |
18:56.55 | file | there is already JSON support in the core using jansson |
18:57.02 | file | so adding a dependency on another library would not be best |
18:57.42 | avb | yeh, i think the best way is to just write a new module using jansson |
19:21.46 | *** join/#asterisk retentiveboy (~retentive@2601:cf:4500:5ea3:42ed:458a:969d:6a0b) |
19:23.38 | *** join/#asterisk hfb (~hfb@45.152.182.235) |
19:32.06 | *** join/#asterisk retentiveboy (~retentive@c-24-125-16-104.hsd1.ga.comcast.net) |
19:45.26 | *** join/#asterisk retentiveboy_ (~retentive@2601:cf:4500:5ea3:9085:b615:c97:336) |
20:15.34 | *** join/#asterisk fstd_ (~fstd@unaffiliated/fisted) |
20:16.41 | *** join/#asterisk drathir_tor (~drathir@gateway/tor-sasl/drathir) |
20:34.11 | *** join/#asterisk sa02irc (~mbax@155-079-043-212.ip-addr.inexio.net) |
21:05.04 | *** join/#asterisk thansen (~thansen@192.74.130.86) |
21:32.24 | *** join/#asterisk lambda (~xiretza@mail.xiretza.xyz) |
21:43.08 | *** join/#asterisk saint_ (~saint_@unaffiliated/saint-/x-0540772) |
21:55.10 | *** join/#asterisk lwlvl (~lwlvl@62.54.177.118) |
23:00.14 | ckb | is there any chance I could get a small sample of a context for an outbound call? |
23:00.53 | ckb | also can I overwrite contexts in satellite configs? |
23:02.24 | ckb | realistically I want to just add exten => 911,n,CURL(...) to whatever settings I have already |
23:44.37 | *** join/#asterisk Milos (~Milos@pdpc/supporter/student/milos) |
23:47.32 | Samot | What's the actual issue? |
23:48.00 | grummund | Is there an equivalent to ${CHANNEL(peerip)} for pjsip? |
23:50.20 | Samot | https://wiki.asterisk.org/wiki/display/AST/Asterisk+18+Function_CHANNEL |
23:54.48 | grummund | pjsip/dialplan_functions.c:843 channel_read_pjsip: Unrecognized argument 'peerip' for 'pjsip' information |
23:54.51 | grummund | func_channel.c:463 func_channel_read: Unknown or unavailable item requested: 'pjsip,peerip' |