For the following Google Assistant Home automation sync request, my backend responses for certain accounts works. But some accounts it fails and I have no clue whatsoever.
{
"requestId": "XXXXXXXXXXXX",
"inputs": [{
"intent": "action.devices.SYNC"
}]
}
How do I debug why a SYNC request has failed? Is there a console or log where I can see what went wrong.
Everything looks just fine. Similar response for some other accounts of my user base works, where as for this user's response it always doesn't work.
Not working Response:
In this instance, its failing for the following SYNC response.
[{
"payload": {
"devices": [{
"id": "7e-f2-ca-ab-40-34-34-95:1:1",
"name": {
"name": "Air Conditioner"
},
"traits": ["action.devices.traits.OnOff"],
"type": "action.devices.types.OUTLET",
"willReportState": false
}, {
"id": "7e-f2-ca-ab-40-34-34-95:2:1",
"name": {
"name": "Office Hooter"
},
"traits": ["action.devices.traits.OnOff"],
"type": "action.devices.types.SWITCH",
"willReportState": false
}, {
"id": "7e-f2-ca-ab-40-34-34-95:5:1",
"name": {
"name": "Office Motion"
},
"traits": ["action.devices.traits.OnOff"],
"type": "action.devices.types.SWITCH",
"willReportState": false
}, {
"id": "7e-f2-ca-ab-40-34-34-95:11:1",
"name": {
"name": "Buzzer"
},
"traits": ["action.devices.traits.OnOff"],
"type": "action.devices.types.SWITCH",
"willReportState": false
}, {
"id": "7e-f2-ca-ab-40-34-34-95:11:2",
"name": {
"name": "DOOR SENSOR"
},
"traits": ["action.devices.traits.OnOff"],
"type": "action.devices.types.SWITCH",
"willReportState": false
}, {
"id": "7e-f2-ca-ab-40-34-34-95:11:4",
"name": {
"name": "Presence Sensor"
},
"traits": ["action.devices.traits.OnOff"],
"type": "action.devices.types.SWITCH",
"willReportState": false
}, {
"id": "7e-f2-ca-ab-40-34-34-95:14:1",
"name": {
"name": "Blue Lamp"
},
"traits": ["action.devices.traits.OnOff"],
"type": "action.devices.types.SWITCH",
"willReportState": false
}, {
"id": "7e-f2-ca-ab-40-34-34-95:14:2",
"name": {
"name": "Green Lamp"
},
"traits": ["action.devices.traits.OnOff"],
"type": "action.devices.types.SWITCH",
"willReportState": false
}, {
"id": "7e-f2-ca-ab-40-34-34-95:14:3",
"name": {
"name": "Side Light"
},
"traits": ["action.devices.traits.OnOff"],
"type": "action.devices.types.SWITCH",
"willReportState": false
}, {
"id": "7e-f2-ca-ab-40-34-34-95:15:1",
"name": {
"name": "Front Light"
},
"traits": ["action.devices.traits.OnOff"],
"type": "action.devices.types.SWITCH",
"willReportState": false
}, {
"id": "7e-f2-ca-ab-40-34-34-95:15:2",
"name": {
"name": "Outdoor Lights"
},
"traits": ["action.devices.traits.OnOff"],
"type": "action.devices.types.SWITCH",
"willReportState": false
}, {
"id": "7e-f2-ca-ab-40-34-34-95:15:3",
"name": {
"name": "Front Dimmer"
},
"traits": ["action.devices.traits.OnOff", "action.devices.traits.Brightness"],
"type": "action.devices.types.SWITCH",
"willReportState": false
}, {
"id": "7e-f2-ca-ab-40-34-34-95:17:1",
"name": {
"name": "Extra Lights"
},
"traits": ["action.devices.traits.OnOff"],
"type": "action.devices.types.SWITCH",
"willReportState": false
}, {
"id": "7e-f2-ca-ab-40-34-34-95:17:2",
"name": {
"name": "Central Light"
},
"traits": ["action.devices.traits.OnOff"],
"type": "action.devices.types.SWITCH",
"willReportState": false
}, {
"id": "7e-f2-ca-ab-40-34-34-95:17:3",
"name": {
"name": "Fan"
},
"traits": ["action.devices.traits.OnOff", "action.devices.traits.Brightness"],
"type": "action.devices.types.SWITCH",
"willReportState": false
}, {
"id": "7e-f2-ca-ab-40-34-34-95:19:1",
"name": {
"name": "Key Ring"
},
"traits": ["action.devices.traits.OnOff"],
"type": "action.devices.types.SWITCH",
"willReportState": false
}, {
"id": "7e-f2-ca-ab-40-34-34-95:19:2",
"name": {
"name": "Office Door"
},
"traits": ["action.devices.traits.OnOff"],
"type": "action.devices.types.SWITCH",
"willReportState": false
}, {
"id": "7e-f2-ca-ab-40-34-34-95:19:4",
"name": {
"name": "Presence Sensor"
},
"traits": ["action.devices.traits.OnOff"],
"type": "action.devices.types.SWITCH",
"willReportState": false
}, {
"id": "7e-f2-ca-ab-40-34-34-95:6:1",
"name": {
"name": "Blue LED"
},
"traits": ["action.devices.traits.OnOff"],
"type": "action.devices.types.SWITCH",
"willReportState": false
}, {
"id": "7e-f2-ca-ab-40-34-34-95:6:2",
"name": {
"name": "Work Lights"
},
"traits": ["action.devices.traits.OnOff"],
"type": "action.devices.types.SWITCH",
"willReportState": false
}, {
"id": "7e-f2-ca-ab-40-34-34-95:6:3",
"name": {
"name": "Dimmer Back"
},
"traits": ["action.devices.traits.OnOff", "action.devices.traits.Brightness"],
"type": "action.devices.types.SWITCH",
"willReportState": false
}, {
"id": "7e-f2-ca-ab-40-34-34-95:4:1",
"name": {
"name": "Buzzer"
},
"traits": ["action.devices.traits.OnOff"],
"type": "action.devices.types.SWITCH",
"willReportState": false
}, {
"id": "7e-f2-ca-ab-40-34-34-95:4:2",
"name": {
"name": "Door Sensor"
},
"traits": ["action.devices.traits.OnOff"],
"type": "action.devices.types.SWITCH",
"willReportState": false
}, {
"id": "7e-f2-ca-ab-40-34-34-95:4:4",
"name": {
"name": "Presence Sensor"
},
"traits": ["action.devices.traits.OnOff"],
"type": "action.devices.types.SWITCH",
"willReportState": false
}, {
"id": "7e-f2-ca-ab-40-34-34-95:3:1",
"name": {
"name": "Plug"
},
"traits": ["action.devices.traits.OnOff"],
"type": "action.devices.types.OUTLET",
"willReportState": false
}, {
"id": "7e-f2-ca-ab-40-34-34-95:7:1",
"name": {
"name": "Curtain Up"
},
"traits": ["action.devices.traits.OnOff"],
"type": "action.devices.types.SWITCH",
"willReportState": false
}, {
"id": "7e-f2-ca-ab-40-34-34-95:7:2",
"name": {
"name": "Curtain Down"
},
"traits": ["action.devices.traits.OnOff"],
"type": "action.devices.types.SWITCH",
"willReportState": false
}, {
"id": "7e-f2-ca-ab-40-34-34-95:7:3",
"name": {
"name": "Regulator"
},
"traits": ["action.devices.traits.OnOff", "action.devices.traits.Brightness"],
"type": "action.devices.types.SWITCH",
"willReportState": false
}, {
"id": "27465191118001134545448968013",
"name": {
"name": "Darkness"
},
"traits": ["action.devices.traits.Scene"],
"type": "action.devices.types.SCENE",
"willReportState": false
}, {
"id": "27465189752942073090942148334",
"name": {
"name": "Everything"
},
"traits": ["action.devices.traits.Scene"],
"type": "action.devices.types.SCENE",
"willReportState": false
}, {
"id": "27507709627159036391184182205",
"name": {
"name": "Mood Lights"
},
"traits": ["action.devices.traits.Scene"],
"type": "action.devices.types.SCENE",
"willReportState": false
}, {
"id": "27514704337364024105847592198",
"name": {
"name": "White Lights"
},
"traits": ["action.devices.traits.Scene"],
"type": "action.devices.types.SCENE",
"willReportState": false
}, {
"id": "27576295525515559712639822299",
"name": {
"name": "Office Lights"
},
"traits": ["action.devices.traits.Scene"],
"type": "action.devices.types.SCENE",
"willReportState": false
}]
},
"requestId": "4881304563722779302"
}]
Whereas for the following SYNC response, it works.
[{
"payload": {
"devices": [{
"id": "21-0b-c9-87-db-70-b6-83:1:1",
"name": {
"name": "Serial Lights"
},
"traits": ["action.devices.traits.OnOff"],
"type": "action.devices.types.OUTLET",
"willReportState": false
}, {
"id": "21-0b-c9-87-db-70-b6-83:2:1",
"name": {
"name": "Water Heater"
},
"traits": ["action.devices.traits.OnOff"],
"type": "action.devices.types.OUTLET",
"willReportState": false
}, {
"id": "21-0b-c9-87-db-70-b6-83:10:1",
"name": {
"name": "Panic Alarm"
},
"traits": ["action.devices.traits.OnOff"],
"type": "action.devices.types.SWITCH",
"willReportState": false
}, {
"id": "21-0b-c9-87-db-70-b6-83:11:1",
"name": {
"name": "Hall Motion Sensor"
},
"traits": ["action.devices.traits.OnOff"],
"type": "action.devices.types.SWITCH",
"willReportState": false
}, {
"id": "21-0b-c9-87-db-70-b6-83:16:1",
"name": {
"name": "Buzzer"
},
"traits": ["action.devices.traits.OnOff"],
"type": "action.devices.types.SWITCH",
"willReportState": false
}, {
"id": "21-0b-c9-87-db-70-b6-83:16:2",
"name": {
"name": "Primary Door"
},
"traits": ["action.devices.traits.OnOff"],
"type": "action.devices.types.SWITCH",
"willReportState": false
}, {
"id": "21-0b-c9-87-db-70-b6-83:16:4",
"name": {},
"traits": ["action.devices.traits.OnOff"],
"type": "action.devices.types.SWITCH",
"willReportState": false
}, {
"id": "21-0b-c9-87-db-70-b6-83:6:1",
"name": {
"name": "Car Keys"
},
"traits": ["action.devices.traits.OnOff"],
"type": "action.devices.types.SWITCH",
"willReportState": false
}, {
"id": "21-0b-c9-87-db-70-b6-83:6:2",
"name": {
"name": "Door Sensor"
},
"traits": ["action.devices.traits.OnOff"],
"type": "action.devices.types.SWITCH",
"willReportState": false
}, {
"id": "21-0b-c9-87-db-70-b6-83:6:4",
"name": {
"name": "Presence Sensor"
},
"traits": ["action.devices.traits.OnOff"],
"type": "action.devices.types.SWITCH",
"willReportState": false
}, {
"id": "21-0b-c9-87-db-70-b6-83:3:1",
"name": {
"name": "Dummy"
},
"traits": ["action.devices.traits.OnOff"],
"type": "action.devices.types.SWITCH",
"willReportState": false
}, {
"id": "21-0b-c9-87-db-70-b6-83:3:2",
"name": {
"name": "All Out"
},
"traits": ["action.devices.traits.OnOff"],
"type": "action.devices.types.SWITCH",
"willReportState": false
}, {
"id": "21-0b-c9-87-db-70-b6-83:3:3",
"name": {
"name": "Bed Room Fan"
},
"traits": ["action.devices.traits.OnOff", "action.devices.traits.Brightness"],
"type": "action.devices.types.SWITCH",
"willReportState": false
}, {
"id": "21-0b-c9-87-db-70-b6-83:5:1",
"name": {
"name": "Hall Light"
},
"traits": ["action.devices.traits.OnOff"],
"type": "action.devices.types.SWITCH",
"willReportState": false
}, {
"id": "21-0b-c9-87-db-70-b6-83:5:2",
"name": {
"name": "Night Light"
},
"traits": ["action.devices.traits.OnOff"],
"type": "action.devices.types.SWITCH",
"willReportState": false
}, {
"id": "21-0b-c9-87-db-70-b6-83:5:3",
"name": {
"name": "Fan"
},
"traits": ["action.devices.traits.OnOff"],
"type": "action.devices.types.SWITCH",
"willReportState": false
}, {
"id": "21-0b-c9-87-db-70-b6-83:8:1",
"name": {
"name": "Exhaust"
},
"traits": ["action.devices.traits.OnOff"],
"type": "action.devices.types.SWITCH",
"willReportState": false
}, {
"id": "21-0b-c9-87-db-70-b6-83:8:2",
"name": {
"name": "kitchen Light"
},
"traits": ["action.devices.traits.OnOff"],
"type": "action.devices.types.SWITCH",
"willReportState": false
}, {
"id": "21-0b-c9-87-db-70-b6-83:8:3",
"name": {
"name": "Balcony Light"
},
"traits": ["action.devices.traits.OnOff"],
"type": "action.devices.types.SWITCH",
"willReportState": false
}, {
"name": {
"name": "Good Night"
},
"traits": ["action.devices.traits.Scene"],
"type": "action.devices.types.SCENE",
"willReportState": false
}]
},
"requestId": "13733611394224717847"
}]
Google has released a smart home sync response validator tool. Use this tool to validate the sync response that is sent to the Google Assistant.
Related
We are using ARM templates to deploy function apps but the slotSetting: true property is not respected and I cannot find any modern documentation as to how to make app settings slot specific.
THis is my app settings snippet in my ARM template
{
"name": "AzureWebJobs.HandleFiscalFrResponse.Disabled",
"value": "1",
"slotSetting": true
}
the setting and the value works but the slotSettings attribute is ignored silently, no error is shown its just ignored.
What is the correct way to make a function app setting slot specific?
I have reproduced the issue and able to resolve, please follow the below steps
Open VS code and create a file using .json extension and se the below code
Thanks #patelchandni for the ARM Template code.
My Filename.json
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"functionAppName": {
"type": "string",
"defaultValue": "[format('tar-{0}', uniqueString(resourceGroup().id))]"
},
"storageAccountType": {
"type": "string",
"defaultValue": "Standard_LRS",
"allowedValues": [
"Standard_LRS",
"Standard_GRS",
"Standard_RAGRS"
]
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
},
"appInsightsLocation": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
},
"functionWorkerRuntime": {
"type": "string",
"defaultValue": "node",
"allowedValues": [
"dotnet",
"node",
"python",
"java"
]
},
"functionPlanOS": {
"type": "string",
"defaultValue": "Windows",
"allowedValues": [
"Windows",
"Linux"
]
},
"functionAppPlanSku": {
"type": "string",
"defaultValue": "EP1",
"allowedValues": [
"EP1",
"EP2",
"EP3"
]
},
"linuxFxVersion": {
"type": "string",
"defaultValue": "",
"metadata": {
"description": "Only required for Linux app to represent runtime stack in the format of 'runtime|runtimeVersion'. For example: 'python|3.9'"
}
}
},
"variables": {
"hostingPlanName": "[parameters('functionAppName')]",
"applicationInsightsName": "[parameters('functionAppName')]",
"storageAccountName": "[concat(uniquestring(resourceGroup().id), 'azfunctions')]",
"isReserved": "[if(equals(parameters('functionPlanOS'), 'Linux'), true(), false())]",
"slotContentShareName": "[concat(parameters('functionAppName'), '-deployment')]"
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2021-02-01",
"name": "[variables('storageAccountName')]",
"location": "[parameters('location')]",
"sku": {
"name": "[parameters('storageAccountType')]"
},
"kind": "Storage"
},
{
"type": "Microsoft.Web/serverfarms",
"apiVersion": "2021-02-01",
"name": "[variables('hostingPlanName')]",
"location": "[parameters('location')]",
"sku": {
"tier": "ElasticPremium",
"name": "[parameters('functionAppPlanSku')]",
"family": "EP"
},
"properties": {
"maximumElasticWorkerCount": 20,
"reserved": "[variables('isReserved')]"
},
"kind": "elastic"
},
{
"type": "microsoft.insights/components",
"apiVersion": "2020-02-02",
"name": "[variables('applicationInsightsName')]",
"location": "[parameters('appInsightsLocation')]",
"tags": {
"[concat('hidden-link:', resourceId('Microsoft.Web/sites', variables('applicationInsightsName')))]": "Resource"
},
"properties": {
"Application_Type": "web"
},
"kind": "web"
},
{
"type": "Microsoft.Web/sites",
"apiVersion": "2021-02-01",
"name": "[parameters('functionAppName')]",
"location": "[parameters('location')]",
"kind": "[if(variables('isReserved'), 'functionapp,linux', 'functionapp')]",
"dependsOn": [
"[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]",
"[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]",
"[resourceId('Microsoft.Insights/components', variables('applicationInsightsName'))]"
],
"properties": {
"reserved": "[variables('isReserved')]",
"serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]",
"siteConfig": {
"linuxFxVersion": "[if(variables('isReserved'), parameters('linuxFxVersion'), json('null'))]",
"appSettings": [
{
"name": "APPINSIGHTS_INSTRUMENTATIONKEY",
"value": "[reference(resourceId('microsoft.insights/components', variables('applicationInsightsName')), '2015-05-01').InstrumentationKey]"
},
{
"name": "AzureWebJobsStorage",
"value": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2019-06-01').keys[0].value)]"
},
{
"name": "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING",
"value": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2019-06-01').keys[0].value)]"
},
{
"name": "WEBSITE_CONTENTSHARE",
"value": "[toLower(parameters('functionAppName'))]"
},
{
"name": "FUNCTIONS_EXTENSION_VERSION",
"value": "~4"
},
{
"name": "FUNCTIONS_WORKER_RUNTIME",
"value": "[parameters('functionWorkerRuntime')]"
},
{
"name": "WEBSITE_NODE_DEFAULT_VERSION",
"value": "~14"
}
]
}
}
},
{
"type": "Microsoft.Web/sites/slots",
"apiVersion": "2021-02-01",
"name": "[concat(parameters('functionAppName'), '/deployment')]",
"kind": "[if(variables('isReserved'), 'functionapp,linux', 'functionapp')]",
"location": "[parameters('location')]",
"dependsOn": [
"[resourceId('Microsoft.Web/sites', parameters('functionAppName'))]"
],
"properties": {
"reserved": "[variables('isReserved')]",
"serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]",
"siteConfig": {
"linuxFxVersion": "[if(variables('isReserved'), parameters('linuxFxVersion'), json('null'))]",
"appSettings": [
{
"name": "APPINSIGHTS_INSTRUMENTATIONKEY",
"value": "[reference(resourceId('microsoft.insights/components', variables('applicationInsightsName')), '2015-05-01').InstrumentationKey]"
},
{
"name": "AzureWebJobsStorage",
"value": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2019-06-01').keys[0].value)]"
},
{
"name": "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING",
"value": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2019-06-01').keys[0].value)]"
},
{
"name": "WEBSITE_CONTENTSHARE",
"value": "[variables('slotContentShareName')]"
},
{
"name": "FUNCTIONS_EXTENSION_VERSION",
"value": "~4"
},
{
"name": "FUNCTIONS_WORKER_RUNTIME",
"value": "[parameters('functionWorkerRuntime')]"
},
{
"name": "WEBSITE_NODE_DEFAULT_VERSION",
"value": "~14"
}
]
}
}
}
]
}
Click on the below marked one to create parameter file
Click new as shown in below picture
Use the below code in FileName.parameters.json
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"functionAppName": {
"value": "zapper01"
},
"storageAccountType": {
"value": "Standard_LRS"
},
"location": {
"value": "EastUS"
},
"appInsightsLocation": {
"value": "EastUS"
},
"functionWorkerRuntime": {
"value": "node"
},
"functionPlanOS": {
"value": "Windows"
},
"functionAppPlanSku": {
"value": "EP1"
},
"linuxFxVersion": {
"value": "3.9"
}
}
}
To login to azure portal, run the PowerShell command
az login
Set subscription by using
az account set --subscription "Subscription ID xxxxxx-xxxxxxx-xxxxxxx-xxxxx"
Deploy to azure portal
New-AzResourceGroupDeployment -ResourceGroupName "ResourceGroupName" -TemplateFile "FileName.json" -TemplateParameterFile "Filename.parameters.json"
After execution you will get below one as result in power shall
After deploying into azure portal open the function app and select deployment slot
Update
I have deployed the below code in Custom deployment In Azure portal
Thanks, #seligj95 for the ARM Template code.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"baseResourceName": {
"type": "string",
"metadata": {
"description": "Name of the resource"
},
"maxLength": 15
},
"appSettingName": {
"type": "string",
"metadata": {
"description": "Name of the app setting"
},
"maxLength": 24
},
"environments": {
"defaultValue": [
"Dev",
"QA",
"UAT",
"Preview"
],
"type": "array",
"metadata": {
"description": "Array with the names for the environment slots"
},
"maxLength": 19
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Location for all resources."
}
}
},
"variables": {
"standardPlanMaxAdditionalSlots": 4,
"webAppPortalName": "[concat(parameters('baseResourceName'), 'Portal')]",
"appServicePlanName": "[concat('AppServicePlan-', parameters('baseResourceName'))]",
"stickyAppSettingName": "[concat(parameters('appSettingName'), '-sticky')]"
},
"resources": [
{
"apiVersion": "2020-06-01",
"type": "Microsoft.Web/serverfarms",
"kind": "app",
"name": "[variables('appServicePlanName')]",
"location": "[parameters('location')]",
"comments": "This app service plan is used for the web app and slots.",
"tags": {
"displayName": "AppServicePlan"
},
"properties": { },
"sku": {
"name": "[if(lessOrEquals(length(parameters('environments')), variables('standardPlanMaxAdditionalSlots')), 'S1', 'P1')]"
}
},
{
"apiVersion": "2020-06-01",
"type": "Microsoft.Web/sites",
"kind": "app",
"name": "[variables('webAppPortalName')]",
"location": "[parameters('location')]",
"comments": "This is the web app, also the default 'nameless' slot.",
"tags": {
"displayName": "WebApp"
},
"properties": {
"serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]",
"siteConfig": {
"appSettings": [
{
"name": "[parameters('appSettingName')]",
"value": "value"
},
{
"name": "[variables('stickyAppSettingName')]",
"value": "value"
}
]
}
},
"dependsOn": [
"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]"
]
},
{
"apiVersion": "2020-06-01",
"type": "Microsoft.Web/sites/slots",
"name": "[concat(variables('webAppPortalName'), '/', parameters('environments')[copyIndex()])]",
"kind": "app",
"location": "[parameters('location')]",
"comments": "This specifies the web app slots.",
"tags": {
"displayName": "WebAppSlots"
},
"properties": {
"serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]"
},
"dependsOn": [
"[resourceId('Microsoft.Web/Sites', variables('webAppPortalName'))]"
],
"copy": {
"name": "webPortalSlot",
"count": "[length(parameters('environments'))]"
}
},
{
"apiVersion": "2020-06-01",
"name": "[concat(variables('webAppPortalName'), '/slotconfignames')]",
"type": "Microsoft.Web/sites/config",
"comments": "This specifies the sticky (slot setting) application settings.",
"dependsOn": [
"[resourceId('Microsoft.Web/Sites', variables('webAppPortalName'))]"
],
"properties": {
"appSettingNames": [
"[variables('stickyAppSettingName')]"
]
}
}
]
}
I have selected the second slot as specific sticky slot in arm template, So the second slot is deployed
I have a smart home action that supports multiple device categories including blinds, doors and windows. The only time this error message comes up is when I say "Close all the windows". The windows are individually addressable. Google Home responds fine if I say "Close all the blinds". On the backend, they're essentially the same and the only thing that's different is the device category. Is there something wrong with this particular device category? This is all in english.
This is the sync response:
{
"requestId": "5149816291025266974",
"payload": {
"agentUserId": "XXXXHOME45",
"devices": [
{
"id": "HOME-34002c000a47363339343638-11",
"name": {
"name": "Bedroom 1"
},
"willReportState": true,
"deviceInfo": {
"manufacturer": "XXXX"
},
"customData": {
"device_class": "XXXX",
"device_id": "XX",
"property_id": XX
},
"type": "action.devices.types.DOOR",
"traits": [
"action.devices.traits.OpenClose"
]
},
{
"id": "HOME-34002c000a47363339343638-12",
"name": {
"name": "Bedroom 2"
},
"willReportState": true,
"deviceInfo": {
"manufacturer": "XXXX"
},
"customData": {
"device_class": "XXXX",
"device_id": "XX",
"property_id": XX
},
"type": "action.devices.types.DOOR",
"traits": [
"action.devices.traits.OpenClose"
]
},
{
"id": "HOME-34002c000a47363339343638-13",
"name": {
"name": "Bathroom"
},
"willReportState": true,
"deviceInfo": {
"manufacturer": "XXXX"
},
"customData": {
"device_class": "XXXX",
"device_id": "XX",
"property_id": XX
},
"type": "action.devices.types.DOOR",
"traits": [
"action.devices.traits.OpenClose"
]
},
{
"id": "HOME-34002c000a47363339343638-14",
"name": {
"name": "Balcony"
},
"willReportState": true,
"deviceInfo": {
"manufacturer": "XXXX"
},
"customData": {
"device_class": "XXXX",
"device_id": "XX",
"property_id": XX
},
"type": "action.devices.types.DOOR",
"traits": [
"action.devices.traits.OpenClose"
]
},
{
"id": "HOME-3e0030000b47363339343638-19",
"name": {
"name": "Window 1"
},
"willReportState": true,
"deviceInfo": {
"manufacturer": "XXXX"
},
"customData": {
"device_class": "XXXX",
"device_id": "XX",
"property_id": XX
},
"type": "action.devices.types.WINDOW",
"traits": [
"action.devices.traits.OpenClose"
],
"roomHint": "Living Room"
},
{
"id": "HOME-3e0030000b47363339343638-20",
"name": {
"name": "Window 2"
},
"willReportState": true,
"deviceInfo": {
"manufacturer": "XXXX"
},
"customData": {
"device_class": "XXXX",
"device_id": "XX",
"property_id": XX
},
"type": "action.devices.types.WINDOW",
"traits": [
"action.devices.traits.OpenClose"
],
"roomHint": "Living Room"
},
{
"id": "HOME-3e0030000b47363339343638-21",
"name": {
"name": "Window 1"
},
"willReportState": true,
"deviceInfo": {
"manufacturer": "XXXX"
},
"customData": {
"device_class": "XXXX",
"device_id": "XX",
"property_id": XX
},
"type": "action.devices.types.WINDOW",
"traits": [
"action.devices.traits.OpenClose"
],
"roomHint": "Master Bedroom"
},
{
"id": "HOME-3e0030000b47363339343638-22",
"name": {
"name": "Window 2"
},
"willReportState": true,
"deviceInfo": {
"manufacturer": "XXXX"
},
"customData": {
"device_class": "XXXX",
"device_id": "XX",
"property_id": XX
},
"type": "action.devices.types.WINDOW",
"traits": [
"action.devices.traits.OpenClose"
],
"roomHint": "Master Bedroom"
},
{
"id": "HOME-330035000a47363339343638-17",
"name": {
"name": "Blind 1"
},
"willReportState": true,
"deviceInfo": {
"manufacturer": "XXXX"
},
"customData": {
"device_class": "XXXX",
"device_id": "XX",
"property_id": XX
},
"type": "action.devices.types.BLINDS",
"traits": [
"action.devices.traits.OpenClose"
],
"roomHint": "Master Bedroom"
},
{
"id": "HOME-3c002b000747363339343638-23",
"name": {
"name": "Window 1"
},
"willReportState": true,
"deviceInfo": {
"manufacturer": "XXXX"
},
"customData": {
"device_class": "XXXX",
"device_id": "XX",
"property_id": XX
},
"type": "action.devices.types.WINDOW",
"traits": [
"action.devices.traits.OpenClose"
],
"roomHint": "Second Bedroom"
},
{
"id": "HOME-3c002b000747363339343638-24",
"name": {
"name": "Window 2"
},
"willReportState": true,
"deviceInfo": {
"manufacturer": "XXXX"
},
"customData": {
"device_class": "XXXX",
"device_id": "XX",
"property_id": XX
},
"type": "action.devices.types.WINDOW",
"traits": [
"action.devices.traits.OpenClose"
],
"roomHint": "Second Bedroom"
},
{
"id": "HOME-330035000a47363339343638-28",
"name": {
"name": "Blind 1"
},
"willReportState": true,
"deviceInfo": {
"manufacturer": "XXXX"
},
"customData": {
"device_class": "XXXX",
"device_id": "XX",
"property_id": XX
},
"type": "action.devices.types.BLINDS",
"traits": [
"action.devices.traits.OpenClose"
],
"roomHint": "Second Bedroom"
},
{
"id": "HOME-330035000a47363339343638-18",
"name": {
"name": "Blind 2"
},
"willReportState": true,
"deviceInfo": {
"manufacturer": "XXXX"
},
"customData": {
"device_class": "XXXX",
"device_id": "XX",
"property_id": XX
},
"type": "action.devices.types.BLINDS",
"traits": [
"action.devices.traits.OpenClose"
],
"roomHint": "Second Bedroom"
},
{
"id": "HOME-34002c000a47363339343638-15",
"name": {
"name": "Blind 1"
},
"willReportState": true,
"deviceInfo": {
"manufacturer": "XXXX"
},
"customData": {
"device_class": "XXXX",
"device_id": "XX",
"property_id": XX
},
"type": "action.devices.types.BLINDS",
"traits": [
"action.devices.traits.OpenClose"
],
"roomHint": "Living Room"
},
{
"id": "HOME-34002c000a47363339343638-16",
"name": {
"name": "Blind 2"
},
"willReportState": true,
"deviceInfo": {
"manufacturer": "XXXX"
},
"customData": {
"device_class": "XXXX",
"device_id": "XX",
"property_id": XX
},
"type": "action.devices.types.BLINDS",
"traits": [
"action.devices.traits.OpenClose"
],
"roomHint": "Living Room"
},
{
"id": "HOME-34002c000a47363339343638-10",
"name": {
"name": "Front Door"
},
"willReportState": true,
"deviceInfo": {
"manufacturer": "XXXX"
},
"customData": {
"device_class": "XXXX",
"device_id": "XX",
"property_id": XX
},
"type": "action.devices.types.DOOR",
"traits": [
"action.devices.traits.OpenClose"
]
},
{
"id": "HOME-340031000d47363330353437-133",
"name": {
"name": "Stove"
},
"willReportState": true,
"deviceInfo": {
"manufacturer": "XXXX"
},
"customData": {
"device_class": "XXXX",
"device_id": "XX",
"property_id": XX
},
"type": "action.devices.types.OUTLET",
"traits": [
"action.devices.traits.OnOff"
]
}
]
}
Here's a screenshot of me saying the commands. As you can see, the window command gets the "didnt get a response" message BUT all the windows do indeed close in real life. Also I can individually control the windows.
EDIT:
Okay I changed my discovery from WINDOW to AWNING and that made it work. So it looks like there is something going on with the window device type? Again I'll attach the discovery response.
{
"requestId": "5149816291025266974",
"payload": {
"agentUserId": "XXXXHOME45",
"devices": [
{
"id": "HOME-34002c000a47363339343638-11",
"name": {
"name": "Bedroom 1"
},
"willReportState": true,
"deviceInfo": {
"manufacturer": "XXXX"
},
"customData": {
"device_class": "XXXX",
"device_id": "XX",
"property_id": XX
},
"type": "action.devices.types.DOOR",
"traits": [
"action.devices.traits.OpenClose"
]
},
{
"id": "HOME-34002c000a47363339343638-12",
"name": {
"name": "Bedroom 2"
},
"willReportState": true,
"deviceInfo": {
"manufacturer": "XXXX"
},
"customData": {
"device_class": "XXXX",
"device_id": "XX",
"property_id": XX
},
"type": "action.devices.types.DOOR",
"traits": [
"action.devices.traits.OpenClose"
]
},
{
"id": "HOME-34002c000a47363339343638-13",
"name": {
"name": "Bathroom"
},
"willReportState": true,
"deviceInfo": {
"manufacturer": "XXXX"
},
"customData": {
"device_class": "XXXX",
"device_id": "XX",
"property_id": XX
},
"type": "action.devices.types.DOOR",
"traits": [
"action.devices.traits.OpenClose"
]
},
{
"id": "HOME-34002c000a47363339343638-14",
"name": {
"name": "Balcony"
},
"willReportState": true,
"deviceInfo": {
"manufacturer": "XXXX"
},
"customData": {
"device_class": "XXXX",
"device_id": "XX",
"property_id": XX
},
"type": "action.devices.types.DOOR",
"traits": [
"action.devices.traits.OpenClose"
]
},
{
"id": "HOME-3e0030000b47363339343638-19",
"name": {
"name": "Window 1"
},
"willReportState": true,
"deviceInfo": {
"manufacturer": "XXXX"
},
"customData": {
"device_class": "XXXX",
"device_id": "XX",
"property_id": XX
},
"type": "action.devices.types.AWNING",
"traits": [
"action.devices.traits.OpenClose"
],
"roomHint": "Living Room"
},
{
"id": "HOME-3e0030000b47363339343638-20",
"name": {
"name": "Window 2"
},
"willReportState": true,
"deviceInfo": {
"manufacturer": "XXXX"
},
"customData": {
"device_class": "XXXX",
"device_id": "XX",
"property_id": XX
},
"type": "action.devices.types.AWNING",
"traits": [
"action.devices.traits.OpenClose"
],
"roomHint": "Living Room"
},
{
"id": "HOME-3e0030000b47363339343638-21",
"name": {
"name": "Window 1"
},
"willReportState": true,
"deviceInfo": {
"manufacturer": "XXXX"
},
"customData": {
"device_class": "XXXX",
"device_id": "XX",
"property_id": XX
},
"type": "action.devices.types.AWNING",
"traits": [
"action.devices.traits.OpenClose"
],
"roomHint": "Master Bedroom"
},
{
"id": "HOME-3e0030000b47363339343638-22",
"name": {
"name": "Window 2"
},
"willReportState": true,
"deviceInfo": {
"manufacturer": "XXXX"
},
"customData": {
"device_class": "XXXX",
"device_id": "XX",
"property_id": XX
},
"type": "action.devices.types.AWNING",
"traits": [
"action.devices.traits.OpenClose"
],
"roomHint": "Master Bedroom"
},
{
"id": "HOME-330035000a47363339343638-17",
"name": {
"name": "Blind 1"
},
"willReportState": true,
"deviceInfo": {
"manufacturer": "XXXX"
},
"customData": {
"device_class": "XXXX",
"device_id": "XX",
"property_id": XX
},
"type": "action.devices.types.BLINDS",
"traits": [
"action.devices.traits.OpenClose"
],
"roomHint": "Master Bedroom"
},
{
"id": "HOME-3c002b000747363339343638-23",
"name": {
"name": "Window 1"
},
"willReportState": true,
"deviceInfo": {
"manufacturer": "XXXX"
},
"customData": {
"device_class": "XXXX",
"device_id": "XX",
"property_id": XX
},
"type": "action.devices.types.AWNING",
"traits": [
"action.devices.traits.OpenClose"
],
"roomHint": "Second Bedroom"
},
{
"id": "HOME-3c002b000747363339343638-24",
"name": {
"name": "Window 2"
},
"willReportState": true,
"deviceInfo": {
"manufacturer": "XXXX"
},
"customData": {
"device_class": "XXXX",
"device_id": "XX",
"property_id": XX
},
"type": "action.devices.types.AWNING",
"traits": [
"action.devices.traits.OpenClose"
],
"roomHint": "Second Bedroom"
},
{
"id": "HOME-330035000a47363339343638-28",
"name": {
"name": "Blind 1"
},
"willReportState": true,
"deviceInfo": {
"manufacturer": "XXXX"
},
"customData": {
"device_class": "XXXX",
"device_id": "XX",
"property_id": XX
},
"type": "action.devices.types.BLINDS",
"traits": [
"action.devices.traits.OpenClose"
],
"roomHint": "Second Bedroom"
},
{
"id": "HOME-330035000a47363339343638-18",
"name": {
"name": "Blind 2"
},
"willReportState": true,
"deviceInfo": {
"manufacturer": "XXXX"
},
"customData": {
"device_class": "XXXX",
"device_id": "XX",
"property_id": XX
},
"type": "action.devices.types.BLINDS",
"traits": [
"action.devices.traits.OpenClose"
],
"roomHint": "Second Bedroom"
},
{
"id": "HOME-34002c000a47363339343638-15",
"name": {
"name": "Blind 1"
},
"willReportState": true,
"deviceInfo": {
"manufacturer": "XXXX"
},
"customData": {
"device_class": "XXXX",
"device_id": "XX",
"property_id": XX
},
"type": "action.devices.types.BLINDS",
"traits": [
"action.devices.traits.OpenClose"
],
"roomHint": "Living Room"
},
{
"id": "HOME-34002c000a47363339343638-16",
"name": {
"name": "Blind 2"
},
"willReportState": true,
"deviceInfo": {
"manufacturer": "XXXX"
},
"customData": {
"device_class": "XXXX",
"device_id": "XX",
"property_id": XX
},
"type": "action.devices.types.BLINDS",
"traits": [
"action.devices.traits.OpenClose"
],
"roomHint": "Living Room"
},
{
"id": "HOME-34002c000a47363339343638-10",
"name": {
"name": "Front Door"
},
"willReportState": true,
"deviceInfo": {
"manufacturer": "XXXX"
},
"customData": {
"device_class": "XXXX",
"device_id": "XX",
"property_id": XX
},
"type": "action.devices.types.DOOR",
"traits": [
"action.devices.traits.OpenClose"
]
},
{
"id": "HOME-340031000d47363330353437-133",
"name": {
"name": "Stove"
},
"willReportState": true,
"deviceInfo": {
"manufacturer": "XXXX"
},
"customData": {
"device_class": "XXXX",
"device_id": "XX",
"property_id": XX
},
"type": "action.devices.types.OUTLET",
"traits": [
"action.devices.traits.OnOff"
]
}
]
}
So everything is exactly the same, except that I changed the device type and it started to work.
Do you see any errors in your project's StackDriver logs corresponding to these request IDs? developers.google.com/actions/smarthome/develop/error-logging
Make sure you select "Google Assistant Action" in the resource filter (for me, by default it was "Cloud Function") to see what Google Assistant is complaining about after the command got executed.
So, I am stuck on an issue, that should be simple, and I am sure I am missing something obvious
I am following this documentation:
so I have 3 tables
client, team, client-team
client.json
{
"name": "client",
"base": "PersistedModel",
"idInjection": true,
"options": {
"validateUpsert": true
},
"properties": {
"name": {
"type": "string",
"required": true
}
},
"validations": [],
"relations": {
"teams": {
"type": "hasMany",
"model": "team",
"foreignKey": "teamId",
"through": "client-team"
}
},
"acls": [],
"methods": {}
}
team.json
{
"name": "team",
"base": "PersistedModel",
"idInjection": true,
"options": {
"validateUpsert": true
},
"properties": {
"type": {
"type": "string",
"required": true,
"default": "first-team"
},
"name": {
"type": "string",
"required": true
}
},
"validations": [],
"relations": {
"clients": {
"type": "hasMany",
"model": "client",
"foreignKey": "clientId",
"through": "client-team"
}
},
"acls": [],
"methods": {}
}
client-team.json
{
"name": "client-team",
"base": "PersistedModel",
"idInjection": true,
"options": {
"validateUpsert": true
},
"properties": {
"clientId": {
"type": "string",
"required": true
},
"teamId": {
"type": "string",
"required": true
}
},
"validations": [],
"relations": {
"client": {
"type": "belongsTo",
"model": "Client",
"foreignKey": "clientId"
},
"team": {
"type": "belongsTo",
"model": "Team",
"foreignKey": "teamId"
}
},
"acls": [],
"methods": {}
}
so all the relations set correctly (I think)...
then in my clients I do have 1 client
[
{
"name": "Client name",
"id": "59876185508eb519385779c6"
}
]
and in my teams I have many, but for sure this:
[
{
"type": "type",
"name": "Team name",
"id": "5ae8a37add2989a32d37f83d"
}
]
And then I go to my
localhost:3000/explorer
To POST a client-team
like this
{
"clientId": "59876185508eb519385779c6",
"teamId": "5ae8a37add2989a32d37f83d"
}
and I get the 200 response with:
{
"clientId": "59876185508eb519385779c6",
"teamId": "5ae8a37add2989a32d37f83d",
"id": "5ae961873a7e3b33f0579fc3"
}
so the connection is there....
But then, when I go to "GET client/id" and do
id: 59876185508eb519385779c6
filter: {"include":["teams"]}
this is the response
{
"name": "Chelsea FC",
"id": "59876185508eb519385779c6",
"teams": []
}
The same happens in the "GET teams/id" and I use
id: 5ae8a37add2989a32d37f83d
filter: {"include":["clients"]}
or if I go to "GET teams/{id}/clients"
and put
id: 5ae8a37add2989a32d37f83d
I get
[]
So what am I doing wrong? I am sure I am missing a stupid, obvious thing :/
using mongo if that makes any difference
There are three issues here:
You described mongodb identifiers as string, that's why you store strings in database instead of object ids. (it's not required as the datasource should understand the real type)
Your models start from lower case letter. The same should be in the relations also. (the first part of the problem, it's fixing issue with ids)
Incorrect relations for client and team models (the second part of the problem, it's fixing includes)
client-team.json
{
"name": "client-team",
"base": "PersistedModel",
"idInjection": true,
"options": {
"validateUpsert": true
},
"properties": {
"clientId": {
"type": "objectId", // !!! changed (not required)
"required": true
},
"teamId": {
"type": "objectId", // !!! changed (not required)
"required": true
}
},
"validations": [],
"relations": {
"client": {
"type": "belongsTo",
"model": "client", // !!! changed
"foreignKey": "clientId"
},
"team": {
"type": "belongsTo",
"model": "team", // !!! changed
"foreignKey": "teamId"
}
},
"acls": [],
"methods": {}
}
client.json
{
"name": "client",
"base": "PersistedModel",
"idInjection": true,
"options": {
"validateUpsert": true
},
"properties": {
"name": {
"type": "string",
"required": true
}
},
"validations": [],
"relations": {
"teams": {
"type": "hasMany",
"model": "team",
"foreignKey": "clientId", // !!! changed (we describing id of this model, not team)
"through": "client-team"
}
},
"acls": [],
"methods": {}
}
team.json
{
"name": "team",
"base": "PersistedModel",
"idInjection": true,
"options": {
"validateUpsert": true
},
"properties": {
"type": {
"type": "string",
"required": true,
"default": "first-team"
},
"name": {
"type": "string",
"required": true
}
},
"validations": [],
"relations": {
"clients": {
"type": "hasMany",
"model": "client",
"foreignKey": "teamId", // !!! changed (the same as the previous)
"through": "client-team"
}
},
"acls": [],
"methods": {}
}
I am getting crazy on this issue, I am running an Azure data factory V1, I need to schedule a copy job every week from 01/03/2009 through 01/31/2009, so I defined this schedule on the pipeline:
"start": "2009-01-03T00:00:00Z",
"end": "2009-01-31T00:00:00Z",
"isPaused": false,
monitoring the pipeline, the data factory schedule on these date:
12/29/2008
01/05/2009
01/12/2009
01/19/2009
01/26/2009
instead of this wanted schedule:
01/03/2009
01/10/2009
01/17/2009
01/24/2009
01/31/2009
why the starting date defined on the pipeline doesn't correspond to the schedule date on the monitor?
Many thanks!
Here is the JSON Pipeline:
{
"name": "CopyPipeline-blob2datalake",
"properties": {
"description": "copy from blob storage to datalake directory structure",
"activities": [
{
"type": "DataLakeAnalyticsU-SQL",
"typeProperties": {
"scriptPath": "script/dat230.usql",
"scriptLinkedService": "AzureStorageLinkedService",
"degreeOfParallelism": 5,
"priority": 100,
"parameters": {
"salesfile": "$$Text.Format('/DAT230/{0:yyyy}/{0:MM}/{0:dd}.txt', Date.StartOfDay (SliceStart))",
"lineitemsfile": "$$Text.Format('/dat230/dataloads/{0:yyyy}/{0:MM}/{0:dd}/factinventory/fact.csv', Date.StartOfDay (SliceStart))"
}
},
"inputs": [
{
"name": "InputDataset-dat230"
}
],
"outputs": [
{
"name": "OutputDataset-dat230"
}
],
"policy": {
"timeout": "01:00:00",
"concurrency": 1,
"retry": 1
},
"scheduler": {
"frequency": "Day",
"interval": 7
},
"name": "DataLakeAnalyticsUSqlActivityTemplate",
"linkedServiceName": "AzureDataLakeAnalyticsLinkedService"
}
],
"start": "2009-01-03T00:00:00Z",
"end": "2009-01-11T00:00:00Z",
"isPaused": false,
"hubName": "edxlearningdf_hub",
"pipelineMode": "Scheduled"
}
}
and here the datasets:
{
"name": "InputDataset-dat230",
"properties": {
"structure": [
{
"name": "Date",
"type": "Datetime"
},
{
"name": "StoreID",
"type": "Int64"
},
{
"name": "StoreName",
"type": "String"
},
{
"name": "ProductID",
"type": "Int64"
},
{
"name": "ProductName",
"type": "String"
},
{
"name": "Color",
"type": "String"
},
{
"name": "Size",
"type": "String"
},
{
"name": "Manufacturer",
"type": "String"
},
{
"name": "OnHandQuantity",
"type": "Int64"
},
{
"name": "OnOrderQuantity",
"type": "Int64"
},
{
"name": "SafetyStockQuantity",
"type": "Int64"
},
{
"name": "UnitCost",
"type": "Double"
},
{
"name": "DaysInStock",
"type": "Int64"
},
{
"name": "MinDayInStock",
"type": "Int64"
},
{
"name": "MaxDayInStock",
"type": "Int64"
}
],
"published": false,
"type": "AzureBlob",
"linkedServiceName": "Source-BlobStorage-dat230",
"typeProperties": {
"fileName": "*.txt.gz",
"folderPath": "dat230/{year}/{month}/{day}/",
"format": {
"type": "TextFormat",
"columnDelimiter": "\t",
"firstRowAsHeader": true
},
"partitionedBy": [
{
"name": "year",
"value": {
"type": "DateTime",
"date": "WindowStart",
"format": "yyyy"
}
},
{
"name": "month",
"value": {
"type": "DateTime",
"date": "WindowStart",
"format": "MM"
}
},
{
"name": "day",
"value": {
"type": "DateTime",
"date": "WindowStart",
"format": "dd"
}
}
],
"compression": {
"type": "GZip"
}
},
"availability": {
"frequency": "Day",
"interval": 7
},
"external": true,
"policy": {}
}
}
{
"name": "OutputDataset-dat230",
"properties": {
"structure": [
{
"name": "Date",
"type": "Datetime"
},
{
"name": "StoreID",
"type": "Int64"
},
{
"name": "StoreName",
"type": "String"
},
{
"name": "ProductID",
"type": "Int64"
},
{
"name": "ProductName",
"type": "String"
},
{
"name": "Color",
"type": "String"
},
{
"name": "Size",
"type": "String"
},
{
"name": "Manufacturer",
"type": "String"
},
{
"name": "OnHandQuantity",
"type": "Int64"
},
{
"name": "OnOrderQuantity",
"type": "Int64"
},
{
"name": "SafetyStockQuantity",
"type": "Int64"
},
{
"name": "UnitCost",
"type": "Double"
},
{
"name": "DaysInStock",
"type": "Int64"
},
{
"name": "MinDayInStock",
"type": "Int64"
},
{
"name": "MaxDayInStock",
"type": "Int64"
}
],
"published": false,
"type": "AzureDataLakeStore",
"linkedServiceName": "Destination-DataLakeStore-dat230",
"typeProperties": {
"fileName": "txt.gz",
"folderPath": "dat230/dataloads/{year}/{month}/{day}/factinventory/",
"format": {
"type": "TextFormat",
"columnDelimiter": "\t"
},
"partitionedBy": [
{
"name": "year",
"value": {
"type": "DateTime",
"date": "WindowStart",
"format": "yyyy"
}
},
{
"name": "month",
"value": {
"type": "DateTime",
"date": "WindowStart",
"format": "MM"
}
},
{
"name": "day",
"value": {
"type": "DateTime",
"date": "WindowStart",
"format": "dd"
}
}
]
},
"availability": {
"frequency": "Day",
"interval": 7
},
"external": false,
"policy": {}
}
}
You need to look at the time slices for the datasets and there activity.
The pipeline schedule (badly named) only defines the start and end period in which any activities can use to provision and run there time slices.
ADFv1 doesn't use a recursive schedule like the SQL Server Agent. Each execution has to be provisioned at an interval on the time line (the schedule) you create.
For example, if you pipeline start and end is for 1 year. But your dataset and activity has a frequency of monthly and interval of 1 month you will only get 12 executions of the whatever is happening.
Apologies, but the concept of time slices is a little difficult to explain if you aren't already familiar. Maybe read this post: https://blogs.msdn.microsoft.com/ukdataplatform/2016/05/03/demystifying-activity-scheduling-with-azure-data-factory/
Hope this helps.
Would you share with us the json for the datasets and the pipeline? It would be easier to help you having that.
In the meanwhile, check if you are using "style": "StartOfInterval" at the scheduler property of the activity, and also check if you are using an offset.
Cheers!
I am using jira rest api's in my application.
I have found the api for getting the meta-data for creating jira issue but that API doesn't return default values of the fields for example :-
This is the request :-
http://kelpie9:8081/rest/api/latest/issue/createmeta?projectKeys=QA&issuetypeNames=Bug&expand=project.issuetypes.fields
the default value of priority field is set to "major" and the description of priority is also customized but the return from api is:-
{
"expand": "projects",
"projects": [
{
"expand": "issuetypes",
"self": "http://kelpie9:8081/rest/api/2/project/QA",
"id": "10010",
"key": "QA",
"name": "QA",
"avatarUrls": {
"16x16": "http://kelpie9:8081/secure/projectavatar?size=small&pid=10010&avatarId=10011",
"48x48": "http://kelpie9:8081/secure/projectavatar?pid=10010&avatarId=10011"
},
"issuetypes": [
{
"expand": "fields",
"self": "http://kelpie9:8081/rest/api/2/issuetype/1",
"id": 1,
"name": "Bug",
"iconUrl": "http://kelpie9:8081/images/icons/bug.gif",
"fields": {
"summary": {
"required": true,
"schema": {
"type": "string",
"system": "summary"
},
"operations": [
"set"
]
},
"timetracking": {
"required": false,
"operations": [ ]
},
"issuetype": {
"required": true,
"schema": {
"type": "issuetype",
"system": "issuetype"
},
"operations": [ ],
"allowedValues": [
{
"id": "1",
"name": "Bug",
"description": "A problem which impairs or prevents the functions of the product.",
"iconUrl": "http://kelpie9:8081/images/icons/bug.gif"
}
]
},
"priority": {
"required": false,
"schema": {
"type": "priority",
"system": "priority"
},
"name": "Priority",
"operations": [
"set"
],
"allowedValues": [
{
"self": "http://172.19.30.101:18080/rest/api/2/priority/1",
"iconUrl": "http://172.19.30.101:18080/images/icons/priority_blocker.gif",
"name": "Blocker",
"id": "1"
},
{
"self": "http://172.19.30.101:18080/rest/api/2/priority/2",
"iconUrl": "http://172.19.30.101:18080/images/icons/priority_critical.gif",
"name": "Critical",
"id": "2"
},
{
"self": "http://172.19.30.101:18080/rest/api/2/priority/3",
"iconUrl": "http://172.19.30.101:18080/images/icons/priority_major.gif",
"name": "Major",
"id": "3"
},
{
"self": "http://172.19.30.101:18080/rest/api/2/priority/4",
"iconUrl": "http://172.19.30.101:18080/images/icons/priority_minor.gif",
"name": "Minor",
"id": "4"
},
{
"self": "http://172.19.30.101:18080/rest/api/2/priority/5",
"iconUrl": "http://172.19.30.101:18080/images/icons/priority_trivial.gif",
"name": "Trivial",
"id": "5"
}
]
},
"customfield_10080": {
"required": false,
"schema": {
"type": "array",
"items": "string",
"custom": "com.atlassian.jira.plugin.system.customfieldtypes:labels",
"customId": 10080
},
"operations": [ ]
},
"customfield_10010": {
"required": false,
"schema": {
"type": "array",
"items": "string",
"custom": "com.atlassian.jira.plugin.system.customfieldtypes:labels",
"customId": 10010
},
"operations": [ ]
},
"customfield_10071": {
"required": false,
"schema": {
"type": "array",
"items": "string",
"custom": "com.atlassian.jira.plugin.system.customfieldtypes:textfield",
"customId": 10071
},
"operations": [ ]
}
}
}
]
}
]
}
There is nothing like default value or description in priority field, how will I get those values?