Please login or register to access secure site features.

Note: By continuing to use DevConnect Program Services you agree to our latest Registered Member Terms.

Sign in using DevConnect ID

Forgot password?

Trouble logging in?

Submit a ticket for Registration Support.

I have an SSO ID

?
sign in

Don't have a DevConnect or SSO ID ?

Create a DevConnect account or join the program.

register now
^
Messages posted by: KyleHodess
Forum Index » Profile for KyleHodess » Messages posted by KyleHodess
Message
Thanks! When you say priority, is that like 3.8.0.2 next week/month? 3.9 next quarter or 4.0 next year?

I got a buddy who can help me work around it in a not very glamorous way. I'm in no real hurry, but if I had something in the next month or 2 I could work with, I'd be really happy.
Not the answer I wanted, but it's an answer. Thank you!

It's a shame because everything in ServiceNOW whether it's a request, incident, whatever, the property is always "number" which makes it a little complicated to work around.
Really?

I'm doing some REST calls with ServiceNOW and their incident number comes across in a JSON payload with the property name of "number"

Is there no way to have a property with the name "number" in a schema in a ED workflow?
Well, I got around Breeze doing the OAuth part by taking my token from Postman and adding it into the REST call I wanted to make not as a OAuth Token but as an additional Authorization header.

I guess cause I'll be running a database underneath anyway that I'll just rig a cron job to a curl script to refresh the token every so often and just make the REST calls read an auth header from the database instead of fighting with the authentication mechanisms in EDP's REST call
So, I'm trying to use the Bookings APIs in Office 365. Unfortunately, the only permissions available for Bookings are delegated, so I have to use a username and password as well as a client ID and secret.

I noticed this old post saying something should be added, but I'm on 3.8 and not seeing much around how to use O365 authentication.
https://www.devconnectprogram.com/forums/posts/list/23128.page#p158557

I can get a token in Postman if I HTTP POST to https://login.microsoftonline.com/MyTenantID/oauth2/v2.0/token
and if I pass in the body:
grant_type = password
client_id = myclientID
client_secret = mysecret
scope = https://graph.microsoft.com/.default
username = A user that can use MS Bookings
password = that user's password.

I can then use that auth token to do a HTTP GET on https://graph.microsoft.com/beta/bookingBusinesses/Bookingemailaddress@mytenant.onmicrosoft.com/appointments

And that gets me appointments.

I was trying to do a HTTP POST to the token endpoint with authentication "none" and just pass the parameters along in the payload, but the payload never seems to accept or take the client_id because it seems hard coded to expect that in the OAuth.

So, out of curiosity, anyone have any tips to authenticate against O365 with a rest call to do stuff?
Success!

I wound up proxying Breeze outbound through my SBC just to see all the HTTP traffic in there rather than the logs, and lo and behold, I always get a 204 no content when there are no new messages, but I do actually get a 200 with the message when there is a message!

I guess I couldn't easily see in trace logs on the Eventing Connector or the SmsConnector that this was happening.

I wound up guessing that the event type "Message" and SMS_Incoming was the thing it published to the event bus and figured my way around.

Yay! I can receive SMS now!

Thanks for the tip on the URL required for the phone number. Is there any more up to date documentation around it? Did I miss something somewhere?
I have the SMS URL set to https://pubsub.zang.io/ACf674eb32b98db1e91f8d4495b2e3670d/SMS/Incoming for my number.

I'ev also verified external connectivity. You can curl this and pop in a Canada/US number and you'll go through my SBC, to my Breeze and get a SMS back from CPaaS with a body of just your mobile number.

curl --location --request POST 'https://aoc15dc1brzedp1-sm100.suletmaaslab.ca/services/EventingConnector/events' --form 'family=sms' --form 'type=smsin' --form 'version=1.0' --form 'eventBody={"smsfrom":"15145551234"}'


For what it's worth, I see the following in my traces when I know I've sent messages to CPaaS - it looks like I get a 204 reply of no content. Does my CPaaS account need to be enabled somehow to use inbound SMS?

2020-10-31 14:04:10,193 [WorkManager.DefaultWorkManager : 3] ZangSmsConnector FINE - ZangSmsConnector-3.8.0.0.0990022 - com.avaya.services.zang.smsconnector.httpservices.HttpConnectionManager - OUTBOUND L:100.125.78.126 R:pubsub.zang.io HTTPS id:e8fe5481-0134-4f08-8b08-0570cec8fb16
GET https://pubsub.zang.io/ACf674eb32b98db1e91f8d4495b2e3670d/SMS/Incoming?session=e8fe5481-0134-4f08-8b08-0570cec8fb16&timeout=15s HTTP/1.1

--------------------

2020-10-31 14:04:12,242 [WorkManager.DefaultWorkManager : 1] ZangSmsConnector TRACE - ZangSmsConnector-3.8.0.0.0990022 - com.avaya.services.zang.smsconnector.poller.PollerResponseReader - checkResponseStatus() : status line HTTP/1.1 204 
My breeze eventing connector is open to the internet.

https://aoc15dc1brzedp1-sm100.suletmaaslab.ca/services/EventingConnector/events

I was able to point the incoming SMS for my phone number to that URL and I see the request come from CPaaS, go through my SBCE proxy and hit Breeze.

Looking for documentation, I only found the 3.3 version info on the ZangSmsConncetor on DevConnect. I appreciate the URL you gave me, but I'm wondering if that was available in documentation I could have found on my own so I don't have to keep bugging you.

I have a single breeze cluster, so I figured for fun I'd give it a cluster IP and cluster FQDN - aoc15dc1brzedp.suletmaaslab.ca. I was thinking maybe the inbound poller on the SMS connector advertises a Breeze event FQDN. It doesn't seem like it because SMS's don't trigger any activity in my Nginx traces on the inbound eventing FQDN.

Using traceCE and debugging "ALL" for the snapin, I was able to get ZangSmsConnector.log to print very verbose information.

One thing that caught my eye was:

2020-10-30 18:20:26,999 [WorkManager.DefaultWorkManager : 0] ZangSmsConnector DEBUG - ZangSmsConnector-3.8.0.0.0990022 - com.avaya.services.zang.smsconnector.httpservices.HttpRequestDataBuilderImpl - prepareHttprequestUri() : No append url provided: request URI - https://pubsub.zang.io/ACf674eb32b98db1e91f8d4495b2e3670d/SMS/Incoming?session=d21eec89-79b0-4028-b5a0-62737c191b23&timeout=15s


I was thinking maybe that "append URL" was like a callback URL and that my polling subscription should include a callback URL for when CPaaS gets a message for me. That's why I tried both not setting a cluster IP/FQDN for my single node cluster AND setting a unique cluster IP/FQDN. I updated my certs to include both FQDNs as SANs. Feel free to check for yourself!

I'm not seeing anything coming in through my SBC reverse proxy when I send a text using the URL But, if I point the phone number's SMS handling to the cluster FQDN's eventing connector URL:

https://aoc15dc1brzedp.suletmaaslab.ca/services/EventingConnector/events

Then I see a lot of 499's which seems like it's an Nginx thing and 504s from the Breeze back to the SBC back to CPaaS. It at least proves CPaaS hits my Breeze.
Oh well. I'll try later...

Thanks!
Awesome!

Closer...

So, I set the SMS request URL in CPaaS to what you suggested - which is also the name of the poller URL Breeze is using.

It just sits there when I send SMS to my number. If I change it back to the default http://static.zang.io/ivr/welcome/sms.xml and send a SMS, i immediately get the "We have received your message..."

When I change it back to the poller URL you suggested/in the breeze logs, nothing gets picked up on subsequent SMSs. Weird.

2020-10-30 14:05:02,482 [Thread-488] ZangSmsConnector INFO - ZangSmsConnector-3.8.0.0.0990022 - com.avaya.services.zang.smsconnector.common.PollerUtil - createInboundUrl() : complete incoming poller url https://pubsub.zang.io/ACf674eb32b98db1e91f8d4495b2e3670d/SMS/Incoming
2020-10-30 14:05:02,483 [Thread-488] ZangSmsConnector INFO - ZangSmsConnector-3.8.0.0.0990022 - com.avaya.services.zang.smsconnector.process.PollerServiceProvider - startPollerForAccount() : Poller started for account ACf674eb32b98db1e91f8d4495b2e3670d Pollertype INBOUND isDefaultService true
2020-10-30 14:05:02,501 [Thread-488] ZangSmsConnector INFO - ZangSmsConnector-3.8.0.0.0990022 - AuthorizationRegistrar: registering listener
2020-10-30 14:05:05,491 [WorkManager.DefaultWorkManager : 2] ZangSmsConnector INFO - ZangSmsConnector-3.8.0.0.0990022 - com.avaya.services.zang.smsconnector.configuration.ServiceManager - getNodeClusterIP() : Cluster IP is : 100.125.78.126
2020-10-30 14:07:09,015 [DAOReplicationQueueServicer] ZangSmsConnector INFO - ZangSmsConnector-3.8.0.0.0990022 - com.avaya.services.zang.smsconnector.configuration.AttributeServiceImpl - notify() : attribute name -defaultSMSNumber attribute value - 15xxxxxxx03
2020-10-30 14:07:09,017 [DAOReplicationQueueServicer] ZangSmsConnector INFO - ZangSmsConnector-3.8.0.0.0990022 - com.avaya.services.zang.smsconnector.configuration.AttributeServiceImpl - notify() : attribute name -accountId attribute value - ACf674eb32b98db1e91f8d4495b2e3670d
2020-10-30 14:07:09,021 [DAOReplicationQueueServicer] ZangSmsConnector INFO - ZangSmsConnector-3.8.0.0.0990022 - com.avaya.services.zang.smsconnector.configuration.AttributeServiceImpl - notify() : attribute name - userPassword attribute value - *****

So, I can use my Breeze to send SMS via Zang. I see there's an inbound poller running in the ZangSmsConnector.log but none of my SMSs to my Zang PSTN number are picked up by the poller. I wanted to avoid invoking an outbound REST call from Zang to my Breeze and was hoping the ZangSMSConnector snap in would pick up the SMS and make an event out of it.

What am I missing?
Thanks! I'll check in to that.

What I just can't wrap my mind around, thinking aloud - and maybe you can speak to this or not - is why do TTS in a way where the license is acquired and released on the fly but by default have speech reco take a license up for the whole call?

Perhaps its a question geared more to Nuance and their product, it just seems like quite the caveat. I looked at the "Planning for AAEP" doc (https://downloads.avaya.com/css/P8/documents/100146998) and it mentioned:

Speaking, the MPP establishes a connection to an Automatic Speech
Recognition (ASR) server and sends the caller's recorded voice response to
the ASR server for processing. The ASR server then returns the results to the
application for further action.
Note: This connection requires one ASR license, which is not released until the
entire call is complete.


Again, thinking aloud - wouldn't it be nice if that read "This connection requires one ASR from cradle to grave unless you spoke to Ross and made something really custom!"?

In any case, I'm just complaining at this point. I do appreciate you having taken the time to explain this to me. Maybe there's a good reason it works this way - maybe there isn't!
The more I ask around, the more I think I'm finding out the answer is that you have to reserve a speech reco license as soon as an app that may need it starts.
I think you got it - grConfirmPIN_DTMF-nuance-osr.grxml is in the main menu, and if I go the other way thru the simpler app and get to a speech reco step thru main menu I fail because the speech reco resources were never initialized at the beginning.

I guess I know the answer, and if I could bug you for one more thing, it would be - what is the best practice for invoking speech reco resources when required rather than reserving licenses if potentially ever needed in a flow? What's the 2 line answer to "how do I bury a call for speech reco closer to the point in the app where I need it?"
Hi everybody!

I'm debugging an application I didn't write (and I'm not an application developer...) where it would appear that Nuance is returning HTTP 500's and my MPPs are getting PASR 19s during busy periods. We seem to be able to line this up in the Nuance nss.logs to oversubscribing our ASR resources.

The application I'm working on is pretty complicated, but the basic part is that it starts with a language prompt (dtmf, not speech) and before even making the selection, I see myself opening an MRCP connection and using a session in Nuance. This leads me to believe that whatever that app is doing from the getgo, it's asking for a speech reco license to do it.

Now, there's another application, a bit simpler, also with language selection, that has an option to "if you'd like to go to the main menu, press 3". That app never ties up an ASR instance - even when it gets me back to the main menu of the primary app. The only difference I can surmise is making my language selection first in the second simpler application.

So, I got to cracking open some OD samples and started looking at the referenced libraries in both applications. I notice the one that always ties up a license calls a scert-7xyz and a scertcommon-7.xyz where my app that never calls up an ASR license only references the scert-7xyz but not the scertcommon jar - and for whatever reason, the app that doesn't tie up the ASR is calling an older scert-7 library too...

Anyhow, I start googling up com.avaya.sce stuff I wind up here and it's the best thinking I can come up with as to why one app always ties up a ASR license even when not doing speech reco yet in the call and another app doesn't at all.

So, that's my story. If anyone can clue me in as to what the mechanics are in an application that triggers an MRCP connection or tries to bring Nuance in, I'd really appreciate it. We sized this box to have more MPP ports than speech reco ports on the basis that we wouldn't be tieing them up in a 1:1 ratio, so I'd like to know if that's feasible through application design. If so, I promise I won't ask how to hack it up myself.

Thanks for listening.

-Kyle.
 
Forum Index » Profile for KyleHodess » Messages posted by KyleHodess
Go to: