Alexa is not recognizing my intents - alexa-skills-kit

Alexa isn't recognizing my intents that have slots. Alexa recognizes all of my intents that don't have slots, but not the ones that have slots. For example, Alexa recognizes "view chores", but not "view chore {chore}". This only happens when running on an actual device,not the simulator. Why is this happening?
Interaction Model:
{
"intents": [
{
"name": "AddChoreIntent",
"samples": [
"add chore",
"add chore for {person}",
"add chore {chore} for {person}",
"add chore {chore}",
"add chore {chore} at {time}",
"add chore {chore} for {person} at {time}",
"add chore for {person} at {time}",
"add chore at {time}",
"add chore repeating {interval}",
"add chore {chore} repeating {interval}",
"add chore {chore} for {person} repeating {interval}",
"add chore {chore} at {time} repeating {interval}",
"add chore {chore} for {person} at {time} repeating {interval}",
"add chore at {time} repeating {interval}",
"i want to add a chore",
"i want to add a chore for {person}",
"i want to add a chore {chore} for {person} ",
"i want to add a chore {chore}",
"i want to add a chore {chore} at {time}",
"i want to add a chore {chore} for {person} at {time}",
"i want to add a chore for {person} at {time}",
"i want to add a chore at {time} ",
"i want to add a chore repeating {interval}",
"i want to add a chore {chore} repeating {interval}",
"i want to add a chore {chore} for {person} repeating {interval}",
"i want to add a chore {chore} at {time} repeating {interval}",
"i want to add a chore {chore} for {person} at {time} repeating {interval}",
"i want to add a chore at {time} repeating {interval}",
"i want to create a chore",
"i want to create a chore for {person}",
"i want to create a chore {chore} for {person}",
"i want to create a chore {chore}",
"i want to create a chore {chore} at {time}",
"i want to create a chore {chore} for {person} at {time}",
"i want to create a chore for {person} at {time}",
"i want to create a chore at {time} ",
"i want to create a chore repeating {interval}",
"i want to create a chore {chore} repeating {interval}",
"i want to create a chore {chore} for {person} repeating {interval}",
"i want to create a chore {chore} at {time} repeating {interval}",
"i want to create a chore {chore} for {person} at {time} repeating {interval}",
"i want to create a chore at {time} repeating {interval}",
"create a chore",
"create a chore for {person}",
"create a chore {chore} for {person}",
"create a chore {chore}",
"create a chore {chore} at {time}",
"create a chore {chore} for {person} at {time}",
"create a chore for {person} at {time}",
"create a chore at {time} ",
"create a chore repeating {interval}",
"create a chore {chore} repeating {interval}",
"create a chore {chore} for {person} repeating {interval}",
"create a chore {chore} at {time} repeating {interval}",
"create a chore {chore} for {person} at {time} repeating {interval}",
"create a chore at {time} repeating {interval}",
"create chore",
"create chore {chore}",
"create chore for {person}",
"create chore {chore} for {person} ",
"create chore {chore} at {time}",
"create chore {chore} for {person} at {time}",
"create chore for {person} at {time}",
"create chore at {time} ",
"create chore repeating {interval}",
"create chore {chore} repeating {interval}",
"create chore {chore} for {person} repeating {interval}",
"create chore {chore} at {time} repeating {interval}",
"create chore {chore} for {person} at {time} repeating {interval}",
"create chore at {time} repeating {interval}",
"add a chore",
"add a chore for {person}",
"add a chore {chore} for {person} ",
"add a chore {chore}",
"add a chore {chore} at {time}",
"add a chore {chore} for {person} at {time}",
"add a chore for {person} at {time}",
"add a chore at {time} ",
"add a chore repeating {interval}",
"add a chore {chore} repeating {interval}",
"add a chore {chore} for {person} repeating {interval}",
"add a chore {chore} at {time} repeating {interval}",
"add a chore {chore} for {person} at {time} repeating {interval}",
"add a chore at {time} repeating {interval}"
],
"slots": [
{
"name": "chore",
"type": "Chore",
"samples": [
"{chore}",
"the chore is {chore}",
"the chore will be {chore}",
"the chore {chore}",
"add chore {chore}",
"add the chore {chore}",
"add {chore}"
]
},
{
"name": "person",
"type": "AMAZON.US_FIRST_NAME",
"samples": [
"{person}",
"{person} will do this chore",
"{person} will",
"it will be {person}"
]
},
{
"name": "time",
"type": "AMAZON.TIME",
"samples": [
"{time}",
"at {time}",
"it will be done at {time}",
"it will be performed at {time}",
"the time is {time}",
"the time to do this chore will be {time}",
"the time will be {time}"
]
},
{
"name": "interval",
"type": "Interval",
"samples": [
"{interval}",
"it will be performed {interval}",
"it will be done {interval}",
"the interval is {interval}"
]
}
]
},
{
"name": "AMAZON.CancelIntent",
"samples": []
},
{
"name": "AMAZON.HelpIntent",
"samples": []
},
{
"name": "AMAZON.StopIntent",
"samples": []
},
{
"name": "DeleteChoreIntent",
"samples": [
"delete chore {chore}",
"delete the chore {chore}",
"delete a chore",
"i want to delete chore {chore}",
"i want to delete the chore {chore}",
"i want to delete a chore"
],
"slots": [
{
"name": "chore",
"type": "Chore",
"samples": [
"the chore is {chore}",
"{chore}",
"delete the chore {chore}",
"delete {chore}",
"delete chore {chore}"
]
}
]
},
{
"name": "EditChoreIntent",
"samples": [
"edit the person of chore {chore} to {person}",
"edit the person of the chore {chore} to {person}",
"edit the person of a chore to {person}",
"i want to edit the person of chore {chore} to {person}",
"i want to edit the person of the chore {chore} to {person}",
"i want to edit the person of a chore to {person}",
"edit the time of chore {chore} to {time}",
"edit the time of the chore {chore} to {time}",
"edit the time of a chore to {time}",
"i want to edit the time of chore {chore} to {time}",
"i want to edit the time of the chore {chore} to {time}",
"i want to edit the time of a chore to {time}",
"edit the interval of chore {chore} to {interval}",
"edit the interval of the chore {chore} to {interval}",
"edit the interval of a chore to {interval}",
"i want to edit the interval of chore {chore} to {interval}",
"i want to edit the interval of the chore {chore} to {interval}",
"i want to edit the interval of a chore to {interval}",
"change the person of chore {chore} to {person}",
"change the person of the chore {chore} to {person}",
"change the person of a chore to {person}",
"i want to change the person of chore {chore} to {person}",
"i want to change the person of the chore {chore} to {person}",
"i want to change the person of a chore to {person}",
"change the time of chore {chore} to {time}",
"change the time of the chore {chore} to {time}",
"change the time of a chore to {time}",
"i want to change the time of chore {chore} to {time}",
"i want to change the time of the chore {chore} to {time}",
"i want to change the time of a chore to {time}",
"change the interval of chore {chore} to {interval}",
"change the interval of the chore {chore} to {interval}",
"change the interval of a chore to {interval}",
"i want to change the interval of chore {chore} to {interval}",
"i want to change the interval of the chore {chore} to {interval}",
"i want to change the interval of a chore to {interval}",
"edit the person of {chore} to {person}",
"edit the person of the {chore} to {person}",
"i want to edit the person of {chore} to {person}",
"i want to edit the person of the {chore} to {person}",
"edit the time of {chore} to {time}",
"edit the time of the {chore} to {time}",
"i want to edit the time of {chore} to {time}",
"i want to edit the time of the {chore} to {time}",
"edit the interval of {chore} to {interval}",
"edit the interval of the {chore} to {interval}",
"i want to edit the interval of {chore} to {interval}",
"i want to edit the interval of the {chore} to {interval}",
"change the person of {chore} to {person}",
"change the person of the {chore} to {person}",
"i want to change the person of {chore} to {person}",
"i want to change the person of the {chore} to {person}",
"change the time of {chore} to {time}",
"change the time of the {chore} to {time}",
"i want to change the time of {chore} to {time}",
"i want to change the time of the {chore} to {time}",
"change the interval of {chore} to {interval}",
"change the interval of the {chore} to {interval}",
"i want to change the interval of {chore} to {interval}",
"i want to change the interval of the {chore} to {interval}"
],
"slots": [
{
"name": "chore",
"type": "Chore",
"samples": [
"{chore}",
"the chore {chore}",
"edit chore {chore}",
"edit {chore}",
"edit the chore {chore}"
]
},
{
"name": "person",
"type": "AMAZON.US_FIRST_NAME",
"samples": []
},
{
"name": "time",
"type": "AMAZON.TIME",
"samples": []
},
{
"name": "interval",
"type": "Interval",
"samples": []
}
]
},
{
"name": "RenameChoreIntent",
"samples": [
"rename {chore} to {newChore}",
"rename the chore {chore}",
"rename {chore}",
"rename the chore {chore} to {newChore}",
"i want to rename {chore} to {newChore}",
"i want to rename the chore {chore}",
"i want to rename {chore}",
"i want to rename the chore {chore} to {newChore}"
],
"slots": [
{
"name": "chore",
"type": "Chore",
"samples": [
"{chore}",
"the chore is {chore}",
"the chore will be {chore}",
"the chore {chore}",
"rename {chore}",
"rename the chore {chore}"
]
},
{
"name": "newChore",
"type": "Chore",
"samples": [
"{newChore}",
"the chore is {newChore}",
"the chore will be {newChore}",
"the chore {newChore}",
"rename {chore} to {newChore}",
"rename the chore to {newChore}",
"rename the chore {chore} to {newChore}"
]
}
]
},
{
"name": "ViewChoreDetailsIntent",
"samples": [
"i want to view the chore {chore}",
"i want to see the chore {chore}",
"i want to see chore {chore}",
"i want to view chore {chore}",
"view chore {chore}",
"view a chore",
"i want to view a chore",
"view chore",
"chore {chore}"
],
"slots": [
{
"name": "chore",
"type": "Chore",
"samples": [
"{chore}",
"view the chore {chore}",
"the chore {chore}",
"view chore {chore}",
"view {chore}"
]
}
]
},
{
"name": "ViewChoresIntent",
"samples": [
"view chores",
"view chores for {person}",
"view the chores for {person}",
"view {person} chores",
"view my chores",
"view all chores",
"view the chores",
"view all of {person} chores",
"view all the chores",
"i want to view chores",
"i want to view chores for {person}",
"i want to view the chores for {person}",
"i want to view {person} chores",
"i want to view my chores",
"i want to view all chores",
"i want to view the chores",
"i want to view all of {person} chores",
"i want to view all the chores",
"i want to see chores",
"i want to see chores for {person}",
"i want to see the chores for {person}",
"i want to see {person} chores",
"i want to see all chores",
"i want to see the chores",
"i want to see all of {person} chores",
"i want to see all the chores",
"my chores",
"the chores",
"what are my chores",
"what are the chores",
"{person} chores",
"what are {person} chores"
],
"slots": [
{
"name": "person",
"type": "AMAZON.US_FIRST_NAME",
"samples": []
}
]
}
],
"types": [
{
"name": "Chore",
"values": [
{
"id": null,
"name": {
"value": "washing dishes",
"synonyms": []
}
},
{
"id": null,
"name": {
"value": "walking the dog",
"synonyms": []
}
},
{
"id": null,
"name": {
"value": "making the bed",
"synonyms": []
}
},
{
"id": null,
"name": {
"value": "doing laundry",
"synonyms": []
}
},
{
"id": null,
"name": {
"value": "cleaning the table",
"synonyms": []
}
},
{
"id": null,
"name": {
"value": "drying dishes",
"synonyms": []
}
},
{
"id": null,
"name": {
"value": "mopping the floor",
"synonyms": []
}
},
{
"id": null,
"name": {
"value": "making dinner",
"synonyms": []
}
},
{
"id": null,
"name": {
"value": "organizing the bedroom",
"synonyms": []
}
},
{
"id": null,
"name": {
"value": "mopping",
"synonyms": []
}
},
{
"id": null,
"name": {
"value": "cleaning",
"synonyms": []
}
},
{
"id": null,
"name": {
"value": "washing",
"synonyms": []
}
},
{
"id": null,
"name": {
"value": "taking out the trash",
"synonyms": []
}
},
{
"id": null,
"name": {
"value": "washing clothes",
"synonyms": []
}
},
{
"id": null,
"name": {
"value": "watering plants",
"synonyms": []
}
},
{
"id": null,
"name": {
"value": "cleaning the pool",
"synonyms": []
}
},
{
"id": null,
"name": {
"value": "watering the plant",
"synonyms": []
}
},
{
"id": null,
"name": {
"value": "watering the plants",
"synonyms": []
}
}
]
},
{
"name": "Interval",
"values": [
{
"id": null,
"name": {
"value": "daily",
"synonyms": []
}
},
{
"id": null,
"name": {
"value": "monthly",
"synonyms": []
}
},
{
"id": null,
"name": {
"value": "weekly",
"synonyms": []
}
}
]
}
],
"prompts": [
{
"id": "Elicit.Intent-AddChoreIntent.IntentSlot-chore",
"promptVersion": "1.0",
"definitionVersion": "1.0",
"variations": [
{
"type": "PlainText",
"value": "What chore?"
},
{
"type": "PlainText",
"value": "Which chore?"
},
{
"type": "PlainText",
"value": "What chore should I add?"
},
{
"type": "PlainText",
"value": "What chore do you want to add?"
}
]
},
{
"id": "Elicit.Intent-AddChoreIntent.IntentSlot-person",
"promptVersion": "1.0",
"definitionVersion": "1.0",
"variations": [
{
"type": "PlainText",
"value": "Who will perform this chore?"
},
{
"type": "PlainText",
"value": "Who will do this chore?"
}
]
},
{
"id": "Elicit.Intent-AddChoreIntent.IntentSlot-time",
"promptVersion": "1.0",
"definitionVersion": "1.0",
"variations": [
{
"type": "PlainText",
"value": "At what time should this chore be performed?"
},
{
"type": "PlainText",
"value": "When should this chore be performed?"
}
]
},
{
"id": "Elicit.Intent-AddChoreIntent.IntentSlot-interval",
"promptVersion": "1.0",
"definitionVersion": "1.0",
"variations": [
{
"type": "PlainText",
"value": "At what interval should this chore be performed?"
}
]
},
{
"id": "Confirm.Intent-DeleteChoreIntent",
"promptVersion": "1.0",
"definitionVersion": "1.0",
"variations": [
{
"type": "PlainText",
"value": "Are you sure you want to delete the chore {chore}?"
}
]
},
{
"id": "Elicit.Intent-DeleteChoreIntent.IntentSlot-chore",
"promptVersion": "1.0",
"definitionVersion": "1.0",
"variations": [
{
"type": "PlainText",
"value": "What chore should I delete?"
},
{
"type": "PlainText",
"value": "What chore do you want to delete?"
},
{
"type": "PlainText",
"value": "Which chore?"
},
{
"type": "PlainText",
"value": "What chore?"
}
]
},
{
"id": "Elicit.Intent-EditChoreIntent.IntentSlot-chore",
"promptVersion": "1.0",
"definitionVersion": "1.0",
"variations": [
{
"type": "PlainText",
"value": "What chore do you want to edit?"
},
{
"type": "PlainText",
"value": "What chore?"
}
]
},
{
"id": "Elicit.Intent-RenameChoreIntent.IntentSlot-chore",
"promptVersion": "1.0",
"definitionVersion": "1.0",
"variations": [
{
"type": "PlainText",
"value": "What chore do you want to rename?"
}
]
},
{
"id": "Elicit.Intent-RenameChoreIntent.IntentSlot-newChore",
"promptVersion": "1.0",
"definitionVersion": "1.0",
"variations": [
{
"type": "PlainText",
"value": "What do you want to rename the chore to?"
}
]
},
{
"id": "Elicit.Intent-ViewChoreDetailsIntent.IntentSlot-chore",
"promptVersion": "1.0",
"definitionVersion": "1.0",
"variations": [
{
"type": "PlainText",
"value": "What chore do you want to view?"
},
{
"type": "PlainText",
"value": "What chore?"
}
]
}
],
"dialog": {
"version": "1.0",
"intents": [
{
"name": "AddChoreIntent",
"confirmationRequired": false,
"prompts": {},
"slots": [
{
"name": "chore",
"type": "Chore",
"elicitationRequired": true,
"confirmationRequired": false,
"prompts": {
"elicit": "Elicit.Intent-AddChoreIntent.IntentSlot-chore"
}
},
{
"name": "person",
"type": "AMAZON.US_FIRST_NAME",
"elicitationRequired": true,
"confirmationRequired": false,
"prompts": {
"elicit": "Elicit.Intent-AddChoreIntent.IntentSlot-person"
}
},
{
"name": "time",
"type": "AMAZON.TIME",
"elicitationRequired": true,
"confirmationRequired": false,
"prompts": {
"elicit": "Elicit.Intent-AddChoreIntent.IntentSlot-time"
}
},
{
"name": "interval",
"type": "Interval",
"elicitationRequired": true,
"confirmationRequired": false,
"prompts": {
"elicit": "Elicit.Intent-AddChoreIntent.IntentSlot-interval"
}
}
]
},
{
"name": "DeleteChoreIntent",
"confirmationRequired": true,
"prompts": {
"confirm": "Confirm.Intent-DeleteChoreIntent"
},
"slots": [
{
"name": "chore",
"type": "Chore",
"elicitationRequired": true,
"confirmationRequired": false,
"prompts": {
"elicit": "Elicit.Intent-DeleteChoreIntent.IntentSlot-chore"
}
}
]
},
{
"name": "EditChoreIntent",
"confirmationRequired": false,
"prompts": {},
"slots": [
{
"name": "chore",
"type": "Chore",
"elicitationRequired": true,
"confirmationRequired": false,
"prompts": {
"elicit": "Elicit.Intent-EditChoreIntent.IntentSlot-chore"
}
},
{
"name": "person",
"type": "AMAZON.US_FIRST_NAME",
"elicitationRequired": false,
"confirmationRequired": false,
"prompts": {}
},
{
"name": "time",
"type": "AMAZON.TIME",
"elicitationRequired": false,
"confirmationRequired": false,
"prompts": {}
},
{
"name": "interval",
"type": "Interval",
"elicitationRequired": false,
"confirmationRequired": false,
"prompts": {}
}
]
},
{
"name": "RenameChoreIntent",
"confirmationRequired": false,
"prompts": {},
"slots": [
{
"name": "chore",
"type": "Chore",
"elicitationRequired": true,
"confirmationRequired": false,
"prompts": {
"elicit": "Elicit.Intent-RenameChoreIntent.IntentSlot-chore"
}
},
{
"name": "newChore",
"type": "Chore",
"elicitationRequired": true,
"confirmationRequired": false,
"prompts": {
"elicit": "Elicit.Intent-RenameChoreIntent.IntentSlot-newChore"
}
}
]
},
{
"name": "ViewChoreDetailsIntent",
"confirmationRequired": false,
"prompts": {},
"slots": [
{
"name": "chore",
"type": "Chore",
"elicitationRequired": true,
"confirmationRequired": false,
"prompts": {
"elicit": "Elicit.Intent-ViewChoreDetailsIntent.IntentSlot-chore"
}
}
]
}
]
}
}

Please make sure you have added all possible slots in Custom Slot Types (If you are note using Amazon default slots) in all enabled languages. If your's is custom slot and that slot is not added in Custom Slot Types then alexa cannot accurately catch it

Related

Is this a good way to structure my firebase database?

I'm just starting out with Firebase (moving across from MySQL) and, after reading many documents/watching tutorials I've tried to structure the database for my "Ebay/Gumtree style app". Are there any major issues with what I've gone with?
I've sort of tried to structure it around each screen on my app so that I'm not reading a whole load of data that isn't needed (I think this is the flat structure I should be going for?), however this had led to some duplication of data (specifically images).
Is this a good way to structure the database? I've taken a few tips from here:
Best way to structure my firebase database
{
"users": {
"user1": {
"email": "example#gmail.com",
"password": "********",
"first name": "Example",
"last name": "User",
"age": "45",
"gender": "Male",
"address": "XX1 9YY"
}
},
"upload image": {
"user1": {
"image1": { #path to image
"condition": "Like New",
"price": "£100",
"upload date": "10/10/2019",
"promoted": True,
"promoted expiry": "11/11/2019"
},
"image2": {
"condition": "New",
"price": "£250",
"upload date": "12/12/2019",
"promoted": False
},
"user2": {
"image1": {
"condition": "Used",
"price": "£50",
"upload date": "05/05/2019",
"promoted": True,
"promoted expiry": "06/06/2019"
}
},
"promoted images": { #max 50 images stored here
"user1": {
"image1": #This image is a duplicated of the image above
"condition": "Like New",
"price": "£100",
"upload date": "10/10/2019",
"promoted": True,
"promoted expiry": "11/11/2019"
},
"user2": {
"image1": { #This image is also a duplicate
"condition": "Used",
"price": "£50",
"upload date": "05/05/2019",
"promoted": True,
"promoted expiry": "06/06/2019"
}
},
"categories": {
"category1": {
"image1": { #This is the third location image1 is stored
"condition": "Used",
"price": "£50",
"upload date": "05/05/2019",
"promoted": True,
"promoted expiry": "06/06/2019"
},
"image2": {
"condition": "New",
"price": "£250",
"upload date": "12/12/2019",
"promoted": False
}
},
"reviews": {
"user1": {
"review1": {
"rating": 4,
"message": "delivered on time, thanks"
},
"review2": {
"rating": 5,
"message": "great product, delivered quickly"
},
}
"user2": {
"review1": {
"rating": 1,
"message": "terrible service, took ages to arrive and was faulty!"
},
},
},
},
}
Some questions/thoughts as to why I've done things so far:
Is it a good idea to have multiple copies of the same image as it would save going through 1000s of images. For example, if I didn't have "promoted images" but wanted to find all promoted images i'd have to search through the "upload image" section (which will have many many more images than the 50 in "promoted images"
Each "category" is a new screen that will load lots of images so I've tried to separate this section out, rather than having a master "category" that gets read everytim any of the pages load.
Thanks

Markdown not interpreted in Slack message block button confirm text

In Slack message blocks, when adding a button, the confirmation dialog text is supposed to support markdown.
https://api.slack.com/reference/block-kit/composition-objects#text
But it just displays plain text:
{
"blocks": [
{
"type": "section",
"accessory": {
"type": "button",
"text": {
"type": "plain_text",
"text": "Validate"
},
"confirm":{
"title": {
"type": "plain_text",
"text": "Details"
},
"text": {
"type": "mrkdwn",
"text": "*bold* ?"
},
"confirm": {
"type": "plain_text",
"text": "Ok"
}
}
},
"text": {
"type": "mrkdwn",
"text": "Hello World!"
}
}
]
}
this seems to work
{
"type": "modal",
"title": {
"type": "plain_text",
"text": "My App",
"emoji": true
},
"submit": {
"type": "plain_text",
"text": "Submit",
"emoji": true
},
"close": {
"type": "plain_text",
"text": "Cancel",
"emoji": true
},
"blocks": [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "This is a mrkdwn section block :ghost: *this is bold*, and ~this is crossed out~, and <https://google.com|this is a link>"
}
}
]
}
I faced the same issue so I reached out to Slack's support, and they confirmed it is a known bug. They have no ETA for the fix yet.

How to get bold text in the title in CardAction

Is it possible to get bold text in the title of a CardAction() in bot framework v4? I'm using it in a HeroCard. I've tried ** Option One ** but it only works in the text of a HeroCard for example, but not in the CardAction() buttons.
Here's my implementation of CardActions in a HeroCard:
var Options = new HeroCard
{
Text = "What do you choose?",
Buttons = new List<CardAction>
{
new CardAction() { Title = "Option One, Type = ActionTypes.ImBack, Value = ""Option One" },
new CardAction() { Title = "Go back", Type = ActionTypes.ImBack, Value = "Go back" },
},
};
You can't. It's up to each channel to determine how to display cards.
Alternatively, you can try using an Adaptive Card with something like the following JSON:
{
"type": "AdaptiveCard",
"body": [
{
"type": "TextBlock",
"text": "What do you choose?"
},
{
"type": "Container",
"items": [
{
"type": "Container",
"items": [
{
"type": "TextBlock",
"text": "Option One",
"weight": "Bolder",
"horizontalAlignment": "Center",
"size": "Large",
"color": "Accent"
}
],
"selectAction": {
"type": "Action.Submit"
},
"id": "optionOne",
"style": "default"
},
{
"type": "Container",
"items": [
{
"type": "TextBlock",
"text": "Go back",
"horizontalAlignment": "Center",
"size": "Large",
"weight": "Bolder",
"color": "Accent"
}
],
"selectAction": {
"type": "Action.Submit",
"data": "goBack"
},
"id": "goBack",
"style": "default"
}
],
"style": "emphasis"
}
],
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"version": "1.0"
}
Again, though, it will be up to the channel for how it wants to display "weight": "Bolder"

How to create multiple tabs of forms using angular json schema form?

I have been successfully using this awesome library and concept called json schema form.
https://www.npmjs.com/package/angular2-json-schema-form
Now using the schema patterns given I am able to generate a form based on a dynamically created schema from database. I want to convert the single form in multiple tabs. I.E I want to group certain kind of fields in one panel.
Is there any kind of support for this functionality? So that I can assign the css class according to the layout.
https://angular2-json-schema-form.firebaseapp.com/?set=ng-jsf&example=ng-jsf-flex-layout&framework=material-design&language=en
You can split group of fields into separate tabs using the fieldsets property.
See the following example from README.md:
{
"properties": {
"firstName": {
"type": "string",
"description": "First name"
},
"lastName": {
"type": "string",
"description": "Last name"
},
"email": {
"type": "string",
"description": "Email"
},
"notificationsFrequency": {
"type": "string",
"description": "Notifications frequency",
"widget": "select",
"oneOf": [
{
"description": "Daily",
"enum": [
"daily"
]
},
{
"description": "Weekly",
"enum": [
"weekly"
]
},
{
"description": "Monthly",
"enum": [
"monthly"
]
}
],
"default": "daily"
}
},
"fieldsets": [
{
"title": "Personal information",
"fields": [
"firstName",
"lastName",
"email"
]
},
{
"title": "Account settings",
"fields": [
"notificationsFrequency"
]
}
]
}

where should i place maniphest.custom-field-definitions in phabricator

where should i place maniphest.custom-field-definitions in phabricator to create new custom field in maniphest
{
"mycompany:estimated-hours": {
"name": "Estimated Hours",
"type": "int",
"caption": "Estimated number of hours this will take.",
"required": true
},
"mycompany:actual-hours": {
"name": "Actual Hours",
"type": "int",
"caption": "Actual number of hours this took."
},
"mycompany:company-jobs": {
"name": "Job Role",
"type": "select",
"options": {
"mycompany:engineer": "Engineer",
"mycompany:nonengineer": "Other"
}
},
"mycompany:favorite-dinosaur": {
"name": "Favorite Dinosaur",
"type": "text"
}
}
Go to config on the main menu and then scroll down until under Applications Configuration there's a link to maniphest.
There, click on the field name you want to change and paste the new value

Resources