in LTE Gx (Diameter) Interface how would transactions like Re-Auth Req/Ans mapped to IMSI? - lte

in LTE Gx (Diameter) Interface how would transactions like Re-Auth Req/Ans mapped to IMSI? these transactions don't have Subscription ID and User-Name APN and same thing for other Diameter Interfaces transactions that are missing Subscription ID and User-Name APN, if you can give me an insight I will greatly appreciated it!

Gx is session based, which means that the session will be from the initial CCR till the end. The RAR will be part of some existing session. There shall a mapping between session id vs the subscriber details in PCRF to process the RAR request.

Lava,
Check the following link may be helpful.
http://tech.queryhome.com/146064/diameter-interface-would-transactions-like-auth-mapped-imsi?show=146070#a146070

Related

Does the shoretel database track who has silently monitored calls?

Is it possible to track in the shoretel database who has silently monitored others calls? If so where is the data stored? tables?
Here is a basic sample query that will get you a list of calls that were silent monitor calls. There is obviously a lot of refining to do based on exactly what details you are looking for. Feel free to PM me if you want help with something more specific.
SELECT `call`.SIPCallId AS `GUID`
, `call`.StartTime AS `StartTime`
, `call`.Extension AS `DN`
, `call`.DialedNumber
FROM `call`
LEFT JOIN connect ON (`call`.ID = connect.CallTableID)
WHERE connect.connectreason = 21
ORDER BY `call`.Extension, `call`.StartTime
The where clause here limits your rows to only those with a reason code of 21, silent monitor. Look at the values in the connectreason table for more details on what reason codes are tracked.
PLEASE NOTE that this is in the CDR Database (port 4309, username of 'st_cdrreport' and readonly password of 'passwordcdrreport') you don't want to accidentally write to the CDR database...

Entity Mapping API AI

I am creating a bot for real estate.
Now in real estate, user may enter any locality or society, which right now is more than 100 000 in database.
To get it resolved as entity, one solution is that I enter all societies/localities as developer entities in system. But, this might not be scalable.
Can you suggest how to approach this problem?
Is this the usecase of sys.any entity?
I can see only one solution to your problem. You can not expect to enter 1,00,000 locality names as an entity in api.ai & this is not a generalized solution as well. What you can do is create an intent & use #sys.any built-in entity for user expressions. Write a webhook & enable use webhook option for that intent. You can get user entered locality as a parameter in webhook & check it in database if it is present over there. If yes, you can give real-estate details for that locality as a response or else say, please enter a valid locality name.

expire=0 in multiple contact REGISTER + SIP

Hi i have query about SIP as below:
If we try to REGISTER and DEREGISTER(means expire=0) in multiple contacts of same REGISTER request like:
Contact: ;+g.oma.sip-im;+g.3gpp.smsip;q=1.0
Contact: ;expires=0
But,
there will be conflict since both registration and deregistration is happening in single request ,where this will
end up with neither sending contact in 200ok(means register) nor not sending contact in 200ok(means deregister)...
What should be the behavior???????
Thanks,
Naveen
I am thinking you are trying it as a random test case to break a spec here.
The intent shall be defined by the Server handling it. If its sequential in Contact processing it shall end with what it processes last.
The more important question is knowing why the entity registers with the format you have specified.
I see merit in doing the reverse if the Server wants to give a fresh lease to the registrations. Again the order is totally dependent on the REGISTRAR.
Flush all my previous registration
Do just specific Contacts i have here.

Creation Concurrency with CQRS and EventStore

Baseline info:
I'm using an external OAuth provider for login. If the user logs into the external OAuth, they are OK to enter my system. However this user may not yet exist in my system. It's not really a technology issue, but I'm using JOliver EventStore for what it's worth.
Logic:
I'm not given a guid for new users. I just have an email address.
I check my read model before sending a command, if the user email
exists, I issue a Login command with the ID, if not I issue a
CreateUser command with a generated ID. My issue is in the case of a new user.
A save occurs in the event store with the new ID.
Issue:
Assume two create commands are somehow issued before the read model is updated due to browser refresh or some other anomaly that occurs before consistency with the read model is achieved. That's OK that's not my problem.
What Happens:
Because the new ID is a Guid comb, there's no chance the event store will know that these two CreateUser commands represent the same user. By the time they get to the read model, the read model will know (because they have the same email) and can merge the two records or take some other compensating action. But now my read model is out of sync with the event store which still thinks these are two separate entities.
Perhaps it doesn't matter because:
Replaying the events will have the same effect on the read model
so that should be OK.
Because both commands are duplicate "Create" commands, they should contain identical information, so it's not like I'm losing anything in the event store.
Can anybody illuminate how they handled similar issues? If some compensating action needs to occur does the read model service issue some kind of compensation command when it realizes it's got a duplicate entry? Is there a simpler methodology I'm not considering?
You're very close to what I'd consider a proper possible solution. The scenario, if I may summarize, is somewhat like this:
Perform the OAuth-entication.
Using the read model decide between a recurring visitor and a new visitor, based on the email address.
In case of a new visitor, send a RegisterNewVisitor command message that gets handled and stored in the eventstore.
Assume there is some concurrency going on that, for the same email address, causes two RegisterNewVisitor messages, each containing what the system thinks is the key associated with the email address. These keys (guids) are different.
Detect this duplicate key issue in the read model and merge both read model records into one record.
Now instead of merging the records in the read model, why not send a ResolveDuplicateVisitorEmailAddress { Key1, Key2 } towards your domain model, leaving it up to the domain model (the codified form of the business decision to be taken) to resolve this issue. You could even have a dedicated read model to deal with these kind of issues, the other read model will just get a kind of DuplicateVisitorEmailAddressResolved event, and project it into the proper records.
Word of warning: You've asked a technical question and I gave you a technical, possible solution. In general, I would not apply this technique unless I had some business indicator that this is worth investing in (what's the frequency of a user logging in concurrently for the first time - maybe solving it this way is just a way of ignoring the root cause (flakey OAuth, no register new visitor process in place, etc)). There are other technical solutions to this problem but I wanted to give you the one closest to what you already have in place. They range from registering new visitors sequentially to keeping an in-memory projection of the visitors not yet in the read model.

CQRS Command and domain state

I am new to CQRS and confused on how command will write a address change to a customer object
Lets say I have divided customer information into two tables
customer - Domain database
Active
Preferred
Customer_Read database
Name,
Address,
Phone,
email
User modifies address of the customer. The address fields are all in read database.
there may be 3 or more query friendly tables that is keeping address information.
If I understand the CQRS implementations (sample) Customer Domain (removed Aggregate root) should be publishing event about address change that should be handled by multiple handlers to update each of the table.
How do I implement this when I wont be changing the state of customer object?
Do domain have to know that it has address in another database ?
Thank you in advance.
Regards,
The Mar
Update--
After going through more posts on net I am assuming that if the state is not changed by the command no event will be generated to save the domain itself but events will be applied to change the address in query / View Model friendly tables.
You still need to persist some domain data somewhere in the write persistence. This way the address is stored in this persistence store, event is published after changing it.
This way:
if there were no change - we can skip publishing the event
domain does not need to know anything about objects that may (or may not) be subscribed to his events.
This logic applies to both persistence in relational DBs (MS SQL with NHibernate, for example) and event sourcing approach.