Unable to send Kaizala Action to selected subscribers - action

I am using the Kaizala Action in PowerAutomate: 'Send action on a group'
https://learn.microsoft.com/en-gb/connectors/kaizala/#send-action-on-a-group
I am trying to send a survey to a subset of the group's subscribers.
The action includes (amongst other things) a 'send to all subscribers' and a 'subscribers' parameters. 'Subscribers' accepts a string of mobile numbers separated by a comma and 'send to all subscribers' is Boolean.
I have not found an explanation for what either of these parameters do. I have tried entering selected mobile numbers and using both Boolean options but in every case the survey is posted to all subscribers in the Group.
Any help or direction to a clearer explanation would be very much appreciated.
Mark

Related

How do you give negative feedback to amazon personalize? i.e. tell personalize that a user doesn't really like a certain item?

I did the amazon personalize deep dive series on youtube. At the timestamp 8:33 in the video, it was mentioned that 'Personalize does not understand negative feedback.' and that any interaction you submit is assumed to be a positive one.
But I think that giving negative feedback could improve the recommendations that we give on a whole. Personalize knowing that a user does not like a given item 'A' would help ensure that it does not recommend items similar to 'A' in the future.
Is there any way in which we can give negative feedback(ex. user doesn't like items x,y,z) to amazon personalize?
A possible way to give negative feedback that I thought of:
Let's say users can give ratings out of 5 for movies. Every time a user gives a rating >= 3 in the interactions dataset, we add an additional interaction in the dataset (i.e we have two interactions saying that a user rated a movie >=3 in the interactions.csv instead of just one). However, if he gives a rating <=2 (meaning he probably doesn't like the movie), we just keep the single interaction of that in the interactions dataset (i.e. we only have one interaction saying that a user rated a movie <=2 in the interactions.csv file)
Would this in any way help to convey to personalize that ratings <=2
are not as important/that the user did not like them?
Negative feedback, where the user explicitly indicates that they dislike an item, is currently not supported as training input for Amazon Personalize. Furthermore, there is currently no way to add weight/reward to specific interactions by event type or event value (see this answer for details).
With that said, you can use impressions with your interactions to indicate items that were seen by the user but that they chose not to interact with. Impressions are only supported by the User-Personalization recipe. From the docs:
Unlike other recipes, which solely use positive interactions (clicking, watching, or purchasing), the User-Personalization recipe can also use impressions data. Impressions are lists of items that were visible to a user when they interacted with (clicked, watched, purchased, and so on) a particular item.
Using this information, a solution created with the User-Personalization recipe can calculate the suitability of new items based on how frequently an item has been ignored, and change recommendations accordingly. For more information see Impressions data.
Impressions are not the same as an explicitly negative interaction but they do imply that the impressed items were considered less relevant/important to the user than the item that they chose to interact with.
Another approach that can be used to consider negative interactions when making recommendations is to have two event types: one event type for positive intent (e.g., "like", "watch", or "purchase") and one event type for dislike (e.g., "dislike"). Then create a Personalize solution that only trains on the positive event type. Finally, at inference time, use a Personalize filter to exclude items that the user has recently disliked.
EXCLUDE ItemID WHERE Interactions.EVENT_TYPE IN ("dislike")
In this case, Personalize is still training only on positive interactions but with the filter you won't recommend items that the user disliked.

Where Can I give Entities in Amazon Lex ? Is Slot the other name for entity mentioned in Amazon Lex?

Every Bot works on NLP. So, Intent and Entities are must to create a bot. I found Intents in the Amazon Lex. but i didnt find entities. Slot is the other name for entity? Can anyone explain me what is intent and entity in detail with Lex?
Following explanation may help you understand the concepts Intent and Entity:
Intent is a task or an action a user want to perform, for example, I want to book a cab or want to order the food.
Book a cab and order the food are intents. These intents have the entities called cab(vehicle), food(pizza). Intents will tell you what user wants to do whereas entities will help you with how to do?
In Amazon lex, Slot is a section where you can mention the entity and the values for the entity.
Example:
Intent: Book a cab
This is a task a user wants to do.
Entity: Cab
Values for the entity is Micro, Mini, Prime.
You can check out this link for complete flow and more details.
Here are some helpful definitions that are used in chatbots and specifically Lex:
Dialog = the conversation between the bot and the user.
Utterance = input sent from the user to the bot.
Response = returned message from the bot to the user.
Intent = an organized group of utterances that helps the bot recognize what the user wants.
Slot = (also called "entity") a parameter within the utterance to provide more specific details to the intent.
Slot Type = an organized group of numbers, letters, words, or phrases that help the bot recognize the value to be passed as a parameter in a Slot.
Slot Value = the number, date, word, or phrase taken from the utterance and saved in a Slot.
Example:
User: I'd like to order a pizza.
The bot takes this user input and processes the utterance by comparing it with all of the intent utterances to best match the user input with the correct intent. The intent may have closely matched this utterance set up in the bot: "I want to order a {food}."
The bot recognizes the value of "pizza" within the utterance as matching a value in the Slot Type possibly named "foodTypes". The Lex bot then delivers this information to Lambda including User Input, Intent, Slots, and Slot Values.
The logic built into Lambda or other endpoint, handles the information to form a response. You should validate and parse the user input and slots yourself to improve the NLP accuracy and correct any mistakes. Then deliver a response back to Lex, which then delivers the response message to the user.
From this example, the information gathered could be this:
User Input = I'd like to order a pizza.
Intent Utterance = "I'd like to order a {food}."
Intent = pizzaOrderIntent
Slot Type = foodTypes
Slot = food
Slot Value = "pizza"

Get only MQ9 messages that belong to a group "2" in C++

I am trying to use IBM MQ client 9 with C++. I would like to read only messages that has group id '2'. I have tried everything but it just does not work. Can someone assist please?
I tried to set groupId and flag to match on group.
MQGET
gmoptions.setMatchOptions(MQMO_MATCH_GROUP_ID);
MQBYTE24 bGroupId("2");
ImqBinary _groupId;
_groupId.set(bGroupId, sizeof(bGroupId));
message.setGroupId(_groupId);
q->get(message, gmoptions);
MQPUT
MQBYTE24 bGroupId("2");
ImqBinary _groupId;
_groupId.set(bGroupId, sizeof(bGroupId));
message.setGroupId(_groupId);
ImqPutMessageOptions pmo;
pmo.setOptions(MQPMO_LOGICAL_ORDER);
pmo.setRecordFields(MQPMRF_GROUP_ID);
q->put(message, pmo);
mqget should be able to get all the msgs with groupId "2" but it does not. Though it can read the msg as soon as I remove setMatchOptions.
Basically, I want to use Group Id as filter where server instance 1 will read msgs only in group1 and server instance 2 will read msgs only in group 2 and so on, instead of creating separate queues for each server instance.
May be following can help me if group id is only for batching instead of filtering though not sure how to do 'Selection using the MQSUB and MQOPEN function calls' in C++
https://www.ibm.com/support/knowledgecenter/SSFKSJ_9.0.0/com.ibm.mq.dev.doc/q022990_.htm
Is there any C++ equivalent of MQSETMP ? I am unable to find any interface in ImqQueue or ImqObject that will let me set message property or selectionString.
I don't think you are going about this the right way.
IBM published a Java/MQ sample program to get messages in a group called GetGroup.java. You can find it here. You can use it as a model for your C++ program.
Basically, the code retrieves a message from the queue and then checks the messageFlags field if the message is part of a group.
if ((myMessage.messageFlags & CMQC.MQMF_MSG_IN_GROUP) == CMQC.MQMF_MSG_IN_GROUP)
If the message is part of the group then the code sets the matchOptions for matching on a group and retrieves all of the messages in the group.
Note: You will probably want to add logical order to the GMO options.
gmo.options |= CMQC.MQGMO_LOGICAL_ORDER;
Finally, what is this?
pmo.setRecordFields(MQPMRF_GROUP_ID);
That doesn't make any sense. You should be setting messageFlags field to MQMF_MSG_IN_GROUP.
You can use the concept of SELECTORS in IBM MQ. A message selector is a variable-length string used by an application to register its interest in only those messages that have properties that satisfy the Structured Query Language (SQL) query that the selection string represents.
A message selector is a concept that has been in the JMS specification for a long time. It
is a way of limiting the messages that are passed to an application to those that meet
certain criteria. Those criteria are based on the values of the message properties and only
the value of the message properties. It is important to understand that selection cannot be
based on any values of the message payload, only on the message property values.
In your case, the PUT application will have to put messages with populating the a certain topic string in MQMD or MQRFH2 header and using MQ Interface function calls, you should be able to pick the messages only with a certain value which in your case is GroupId value.
Below are few reference links to the concept:
https://www.ibm.com/support/knowledgecenter/SSFKSJ_7.5.0/com.ibm.mq.dev.doc/q022990_.htm
http://publib.boulder.ibm.com/infocenter/ieduasst/v1r1m0/topic/com.ibm.iea.wmq_v7/wmq/7.0/MQI/iea_330_wmqv7_API_3_Selectors.pdf ==> Pdf gets downloaded
To understand Message Properties => https://www.ibm.com/support/knowledgecenter/en/SSFKSJ_8.0.0/com.ibm.mq.dev.doc/q022920_.htm

How to give a specific intent response in Amazon Lex based on an earlier response?

I have an initial intent used to classify the user ie Intent1 "I Need help" with a 1 slot (Slot 1) asking "what type of user are you? " The options are "userType1", "UserType2" and UserType3".
following this, with Amazon connect I have a a GetUserInput with multiple inputs. i.e. "What do you need help with?", with lots of intents new intents e.g Intent 2 "Shoes", Intent 3 "socks" Intent 4 "sandals.
Within Intent 2, I want to give a specific text response, Based on the answer to Slot1. the intents are different?
You have to manage context of the conversation to be able to take actions based on previous responses.
https://docs.aws.amazon.com/lex/latest/dg/context-mgmt.html
Basically in the first intent, based on the slot value you have to store it in session attributes, in the next intent you will check the value and generate the response.
Do check the OrderFlowers Blueprint Lambda function and this link. Notice that once the user gives the slot value of FlowerType it sets the price as session attribute.
Hope it helps, let me know if you have further doubts

# Symbol preventing data from going from one form page to another Oracle APEX

In an Oracle Apex 4.2 form when a user has entered a '#' symbol into the text field it's preventing the data from the other fields to carry over when your using the "Set These Items With These Values" function.
The application is a staffing management app, the recruiters will click on a "Submit to Req" button that will pop open another window in a modal (skillbuilders modal plugin was used) asking if they're sure they want to submit and will also show a list of previously submitted candidates that's generated from the req number that's placed in a hidden field in the submittal.
Now, on this page there are also hidden fields that pull information from the job requirements table so when the recruiter clicks on the "Yes" button, it populates the client name, job name, sales name, req number and req priority fields in the candidate submittal form so we're able to track this information better for management.
Often times the sales staff will put the client's job number in with the # symbol, ex: Job #123456, into the job field.
When someone does that, it's preventing the next field that is a hidden field from being carried over and populating that field.
I had a similar issue previously with commas, and using a / in the "Set These Items With These Values" are I was able to work around that problem, but that isn't working for the # symbol.
As of right now I've asked sales to not use that symbol, but that's not a long term answer here.
Any insight would be great.
A simple way to solve this issue is to use the Whitelist option available.
Steps are as follows:
Edit the Textfield item
Click on Security tab or scroll to Security section in the edit page.
From the Restricted Characters dropdown select Whitelist for a-Z, 0-9 and space.
Click Apply Changes.
When user enters the # character and tries to proceed, APEX will throw an error message as
Job field contains special characters. Only the characters a-Z, 0-9 and spaces are allowed.
This way user is restricted to use only the whitelisted characters.