How to set a response variant on DialogFlow using their REST API - dialogflow-es

I'm trying to create text variants using the /intents API resource mentioned here:
https://dialogflow.com/docs/reference/agent/intents
However, it seems that there is not a way to do such thing. if I send the JSON as:
"responses": [
{
"messages": [
{
"speech": "Okay response variant 01",
"type": 0
},
{
"speech": "Okay response variant 02",
"type": 0
}
],
it creates 2 full response text messages instead of a text variant, do you know what I could be missing on the JSON to create the responses as text variant?
Thanks in advance

I know it was decades ago, but I happened to come across and wanted to quickly leave this example. Maybe it will help the next person who looks in here. :)
"messages": [
{
"type": "0",
"title": "",
"textToSpeech": "",
"lang": "en",
"speech": [
"Okay response variant 01",
"Okay response variant 02",
"Okay response variant 03"
],
"condition": ""
}
],

Related

Walmart API- Existing Type error issue- Bulk Items Setup(multiple)

I am able to make API calls to Walmart API through a Postman the bulk items Setup(Multiple) A POST request Response in an Successfully comes in postman, but in Walmart FeedId seeing an error. I am try to another way through excel it's working fine and publish the product in Walmart Successfully. Through API it's not working not publish the product in Walmart can you fix the error. even though I seem to have everything correct.
**HTTP REQUEST**
[enter image description here][1]
[https://marketplace.walmartapis.com/v3/feeds?feedType=item][1]
**METHOD**
POST
**HTTP RESPONSE STATUS**
200 OK
**HTTP RESPONSE BODY**
{
"feedId": "18486EF565B046D88641274001003195#AU8BCgA",
"additionalAttributes": null,
"errors": null
}
**REQUEST HEADERS**
Authorization : "XXXXXXXXXXXXX"
WM_SEC.ACCESS_TOKEN: "XXXXXXXXXXXXXXXXXX"
WM_QOS.CORRELATION_ID: {my arbitrary text key}
WM_SVC.NAME: Walmart Marketplace
Accept: application/JSON
**POST PAYLOAD**
<pre><code>{
"MPItem": [
{
"Item": {
"sku": "xxxxxxxx",
"ShippingWeight": "1LB",
"price": " ",
"productIdentifiers": {
"productIdType": "UPC",
"productId": "xxxxxxx"
},
"productCategory": "xxxxxxxx",
"asin": "",
"additionalProductAttributes": [
{
"productAttributeValue": "",
"productAttributeName": ""
}
],
"additionalOfferAttributes": [
{
"additionalOfferAttributeName": "",
"additionalOfferAttributeValue": ""
}
]
}
}
],
"MPItemFeedHeader": {
"locale": "en",
"sellingChannel": "mpsetupbymatch",
"version": "1.0",
"processMode": "REPLACE",
"subset": "EXTERNAL",
"Mart": "WALMART_US"
}
}</pre></code>
[1]: https://i.stack.imgur.com/YwaMJ.png
Your issue seems to be that ShippingWeight is invalid.
Their spec sheet says
"ShippingWeight": {
"type": "number",
"title": "Shipping Weight (lbs)",
"minimum": 0,
"maximum": 10000000000000000,
"exclusiveMaximum": false,
"multipleOf": 0.001
},
You need to replace ShippingWeight": "1LB", with ShippingWeight": "1",
Also you don't need to send additionalOfferAttributes if its going to be empty, it is not required.

How to delete comment which a deeply nested array of objects

I am new to MongoDB. This is a MERN project. I am using the MongoDB database. I am trying to delete the comments using id which are nested in an array of objects. My document looks like this,
{
"_id": "60aa8ed98ad79d380cb250b4",
"course_id": "609a2cedd07ba73200ada318",
"instructor_id": "609a2875aeefe40a6c9befc5",
"title": "New Annoucement",
"description": "new announcement is posted",
"video_url": "youtube.com",
"comments": [
{
"comments": [
{
"comments": [
{
"comments": [
{
"comments": [],
"_id": "60aa912b301ccc397057ded6",
"username": "Sandy",
"user_id": "609a2875aeefe40a6c9befc5",
"content": "1",
"parentId": "60aa9123301ccc397057ded5",
"type": "reply",
"annoucementId": "60aa8ed98ad79d380cb250b4"
}
],
"_id": "60aa9123301ccc397057ded5",
"username": "Sandy",
"user_id": "609a2875aeefe40a6c9befc5",
"content": "why its not deleting",
"parentId": "60aa8f648ad79d380cb250b6",
"type": "reply",
"annoucementId": "60aa8ed98ad79d380cb250b4"
}
],
"_id": "60aa8f648ad79d380cb250b6",
"username": "Sandy",
"user_id": "609a2875aeefe40a6c9befc5",
"content": "two",
"parentId": "60aa8edd8ad79d380cb250b5",
"type": "reply",
"annoucementId": "60aa8ed98ad79d380cb250b4"
}
],
"_id": "60aa8edd8ad79d380cb250b5",
"username": "Sandy",
"user_id": "609a2875aeefe40a6c9befc5",
"content": "one",
"type": "comment",
"annoucementId": "60aa8ed98ad79d380cb250b4"
}
],
"createdAt": "2021-05-23T17:20:25.579Z",
"updatedAt": "2021-05-23T17:30:19.116Z",
"__v": 6
}
this is a big object called announcements which has a comments array and that contains an array of objects which are comments. And if someone replies to a comment I am making another array called comments and storing all the replies objects.
I want to delete the object using ._id: 60aa912b301ccc397057ded6, which is the reply object with the content "1".
I have tried to find, findById, findOneAndRemove, findOneAndDelete it's not finding the document.
You could perhaps change the way you structure the comments and not nest them? Since each comment already has a unique id, nesting them only makes it more difficult to access the comment object, and it's a rabbit's hole, where the nesting might never end?
I propose you add an property in the comment object A to point to other comment object B, if A is a reply or quote of B.
That way you can have an array of comment objects and modify them must easily.
Cheers.

Is it possible to replace a part of value from captured correlation in Loadrunner?

I am correlating json response, but from the captured json I need to replace a value with some different text.
For example - captured response is as below and saved to "corr_json"variable:
{
"data": [{
"type": "articles",
"id": "1",
"attributes": {
"title": JSON:API paints my bikeshed!,
"body": "The shortest article. Ever.",
"created": "2015-05-22T14:56:29.000Z",
"updated": "2015-05-22T14:56:28.000Z"
},
"relationships": {
"author": {
"data": {"id": "42", "type": "people"}
}
}
from this I need to replace string
API paints my bikeshed
with text Performance Testing and pass to next request, so the json to be pass as below:
{
"data": [{
"type": "articles",
"id": "1",
"attributes": {
"title": "Performance Testing",
"body": "The shortest article. Ever.",
"created": "2015-05-22T14:56:29.000Z",
"updated": "2015-05-22T14:56:28.000Z"
},
"relationships": {
"author": {
"data": {"id": "42", "type": "people"}
}
}
Is there a way to do this in Loadrunner?
Check lr_json_replace api provided by LoadRunner.
Depending upon your protocol in use, the language of LoadRunner is either C, C#, C++, VB, or JavaScript. Use the sting processing capabilities of your language, combined with your programming skills to reformat the text in question to include your tag.
Hint, you might consider two correlations on the returned data, one which begins with the first curly brace and ends with '"title":' with the second beginning with '"title":' and ending with the '\t\t}\r\t}' (if I am reading the text right) structure. Then you could simply sprintf() in C to pack a few strings (corr1+ your tag+corr2+ end structure) together to hit your mark.

Amexon alexa development InvalidIntentSamplePhraseSlot issue

I'm getting an error: cannot include both a phrase slot and another intent slot. Error code: InvalidIntentSamplePhraseSlot while building Alexa skill.
Sample JSON is as follows,
{
"name": "HackathonListIntent",
"slots": [
{
"name": "resultCount",
"type": "AMAZON.NUMBER"
},
{
"name": "search1",
"type": "AMAZON.SearchQuery"
},
{
"name": "search2",
"type": "AMAZON.SearchQuery"
}
],
"samples": [
"{resultCount} for {search1} from {search2}",
]}
resultCount: skill fetch thousands of result from backend this parameter will restrict result length as per users convenience.
search1 and search2 are different independent search parameter which user may ask.
FYI: I have tried this
For the InvalidIntentSamplePhraseSlot issue, according to Amazon's documentation, you can only use one AMAZON.SearchQuery slot per intent.
"Make sure that your skill uses no more than one AMAZON.SearchQuery slot per intent."
https://developer.amazon.com/docs/custom-skills/slot-type-reference.html#amazonsearchquery
Also, for your sample entry make sure the array with one item does not include a comma. It will cause an Invalid JSON error.
"samples": [
"{resultCount} for {search1} from {search2}"
]}
AMAZON.SearchQuery are limited to 1 slot per intent and also it will need a phrase along with the slot. I would suggest you to use AMAZON.Person as it can take any value and dose not need a phrase.
{
"name": "HackathonListIntent",
"slots": [
{
"name": "resultCount",
"type": "AMAZON.NUMBER"
},
{
"name": "search2",
"type": "AMAZON.Person"
},
{
"name": "search2",
"type": "AMAZON.Person"
}
],
"samples": [
"{resultCount} for {search1} from {search2}"
]
}

how to implement algolia autocomplete on a single index, but i want results to show based on facets

I have an index on algolia, each document like this.
{
"title": "sample title",
"slug": "sample slug",
"content": "Head towards Rajinder Da Dhaba for some insanely delicious Kebabs!!",
"Tags": ["fashion", "shoes"],
"created": "2017-03-30T12:10:08.815Z",
"city": "delhi",
"user": {
"_id": "58b6f3ea884fdc682a820dad",
"description": "Roughly, somewhere between insanity and zen. Mostly the guy at the window seat!",
"displayName": "Jon Doe"
},
"type": "Post",
"places": [
{
"name": "Rajinder Da Dhaba",
"slug": "Rajinder-Da-Dhaba-safdarjung-9e9ffe",
"location": {
"_geoloc": [
{
"name": "Safdarjung",
"_id": "59611a2c2094b56a39afcbce",
"coordinates": {
"lng": 77.2030268,
"lat": 28.5685586
}
}
]
}
}
],
"objectID": "58dcf5a0355b590560d6ad68",
}
I want to implement autocomplete on this.
However, when i see the demos present in algolia dashboard, i found out that it returns the complete documents.
I want to only match on user.displayName, place.name, and title
and return only these fields as suggestions in the autocomplete results instead of complete documents, which match.
I know I can create separate indexes for users, places;
But is this possible with only a single index??
Did you had a look at http://algolia.com/doc/tutorials/search-ui/autocomplete/auto-complete/ ?
It shows how to have a custom display from an index.
To match on on user.displayName, place.name, and title
you can configure the "searchable attributes" from the algolia dashboard.

Resources