|
| 1 | +# Setting up LUIS via CLI: |
| 2 | + |
| 3 | +This README contains information on how to create and deploy a LUIS application. When the bot is ready to be deployed to production, we recommend creating a LUIS Endpoint Resource for usage with your LUIS App. |
| 4 | + |
| 5 | +> _For instructions on how to create a LUIS Application via the LUIS portal, see these Quickstart steps:_ |
| 6 | +> 1. _[Quickstart: Create a new app in the LUIS portal][Quickstart-create]_ |
| 7 | +> 2. _[Quickstart: Deploy an app in the LUIS portal][Quickstart-deploy]_ |
| 8 | +
|
| 9 | + [Quickstart-create]: https://docs.microsoft.com/azure/cognitive-services/luis/get-started-portal-build-app |
| 10 | + [Quickstart-deploy]:https://docs.microsoft.com/azure/cognitive-services/luis/get-started-portal-deploy-app |
| 11 | + |
| 12 | +## Table of Contents: |
| 13 | + |
| 14 | +- [Prerequisites](#Prerequisites) |
| 15 | +- [Import a new LUIS Application using a local LUIS application](#Import-a-new-LUIS-Application-using-a-local-LUIS-application) |
| 16 | +- [How to create a LUIS Endpoint resource in Azure and pair it with a LUIS Application](#How-to-create-a-LUIS-Endpoint-resource-in-Azure-and-pair-it-with-a-LUIS-Application) |
| 17 | + |
| 18 | +___ |
| 19 | + |
| 20 | +## [Prerequisites](#Table-of-Contents): |
| 21 | + |
| 22 | +#### Install Azure CLI >=2.0.61: |
| 23 | + |
| 24 | +Visit the following page to find the correct installer for your OS: |
| 25 | +- https://docs.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latest |
| 26 | + |
| 27 | +#### Install LUIS CLI >=2.4.0: |
| 28 | + |
| 29 | +Open a CLI of your choice and type the following: |
| 30 | + |
| 31 | +```bash |
| 32 | +npm i -g luis-apis@^2.4.0 |
| 33 | +``` |
| 34 | + |
| 35 | +#### LUIS portal account: |
| 36 | + |
| 37 | +You should already have a LUIS account with either https://luis.ai, https://eu.luis.ai, or https://au.luis.ai. To determine where to create a LUIS account, consider where you will deploy your LUIS applications, and then place them in [the corresponding region][LUIS-Authoring-Regions]. |
| 38 | + |
| 39 | +After you've created your account, you need your [Authoring Key][LUIS-AKey] and a LUIS application ID. |
| 40 | + |
| 41 | + [LUIS-Authoring-Regions]: https://docs.microsoft.com/azure/cognitive-services/luis/luis-reference-regions#luis-authoring-regions] |
| 42 | + [LUIS-AKey]: https://docs.microsoft.com/azure/cognitive-services/luis/luis-concept-keys#authoring-key |
| 43 | + |
| 44 | +___ |
| 45 | + |
| 46 | +## [Import a new LUIS Application using a local LUIS application](#Table-of-Contents) |
| 47 | + |
| 48 | +### 1. Import the local LUIS application to luis.ai |
| 49 | + |
| 50 | +```bash |
| 51 | +luis import application --region "LuisAppAuthoringRegion" --authoringKey "LuisAuthoringKey" --appName "FlightBooking" --in "./cognitiveModels/FlightBooking.json" |
| 52 | +``` |
| 53 | + |
| 54 | +Outputs the following JSON: |
| 55 | + |
| 56 | +```json |
| 57 | +{ |
| 58 | + "id": "########-####-####-####-############", |
| 59 | + "name": "FlightBooking", |
| 60 | + "description": "A LUIS model that uses intent and entities.", |
| 61 | + "culture": "en-us", |
| 62 | + "usageScenario": "", |
| 63 | + "domain": "", |
| 64 | + "versionsCount": 1, |
| 65 | + "createdDateTime": "2019-03-29T18:32:02Z", |
| 66 | + "endpoints": {}, |
| 67 | + "endpointHitsCount": 0, |
| 68 | + "activeVersion": "0.1", |
| 69 | + "ownerEmail": "bot@contoso.com", |
| 70 | + "tokenizerVersion": "1.0.0" |
| 71 | +} |
| 72 | +``` |
| 73 | + |
| 74 | +For the next step, you'll need the `"id"` value for `--appId` and the `"activeVersion"` value for `--versionId`. |
| 75 | + |
| 76 | +### 2. Train the LUIS Application |
| 77 | + |
| 78 | +```bash |
| 79 | +luis train version --region "LuisAppAuthoringRegion" --authoringKey "LuisAuthoringKey" --appId "LuisAppId" --versionId "LuisAppversion" --wait |
| 80 | +``` |
| 81 | + |
| 82 | +### 3. Publish the LUIS Application |
| 83 | + |
| 84 | +```bash |
| 85 | +luis publish version --region "LuisAppAuthoringRegion" --authoringKey "LuisAuthoringKey" --appId "LuisAppId" --versionId "LuisAppversion" --publishRegion "LuisAppPublishRegion" |
| 86 | +``` |
| 87 | + |
| 88 | +> `--region` corresponds to the region you _author_ your application in. The regions available for this are "westus", "westeurope" and "australiaeast". <br/> |
| 89 | +> These regions correspond to the three available portals, https://luis.ai, https://eu.luis.ai, or https://au.luis.ai. <br/> |
| 90 | +> `--publishRegion` corresponds to the region of the endpoint you're publishing to, (e.g. "westus", "southeastasia", "westeurope", "brazilsouth"). <br/> |
| 91 | +> See the [reference docs][Endpoint-API] for a list of available publish/endpoint regions. |
| 92 | +
|
| 93 | + [Endpoint-API]: https://westus.dev.cognitive.microsoft.com/docs/services/5819c76f40a6350ce09de1ac/operations/5819c77140a63516d81aee78 |
| 94 | + |
| 95 | +Outputs the following: |
| 96 | + |
| 97 | +```json |
| 98 | + { |
| 99 | + "versionId": "0.1", |
| 100 | + "isStaging": false, |
| 101 | + "endpointUrl": "https://westus.api.cognitive.microsoft.com/luis/v2.0/apps/########-####-####-####-############", |
| 102 | + "region": "westus", |
| 103 | + "assignedEndpointKey": null, |
| 104 | + "endpointRegion": "westus", |
| 105 | + "failedRegions": "", |
| 106 | + "publishedDateTime": "2019-03-29T18:40:32Z", |
| 107 | + "directVersionPublish": false |
| 108 | +} |
| 109 | +``` |
| 110 | + |
| 111 | +To see how to create an LUIS Cognitive Service Resource in Azure, please see [the next README][README-LUIS]. This Resource should be used when you want to move your bot to production. The instructions will show you how to create and pair the resource with a LUIS Application. |
| 112 | + |
| 113 | + [README-LUIS]: ./README-LUIS.md |
| 114 | + |
| 115 | +___ |
| 116 | + |
| 117 | +## [How to create a LUIS Endpoint resource in Azure and pair it with a LUIS Application](#Table-of-Contents) |
| 118 | + |
| 119 | +### 1. Create a new LUIS Cognitive Services resource on Azure via Azure CLI |
| 120 | + |
| 121 | +> _Note:_ <br/> |
| 122 | +> _If you don't have a Resource Group in your Azure subscription, you can create one through the Azure portal or through using:_ |
| 123 | +> ```bash |
| 124 | +> az group create --subscription "AzureSubscriptionGuid" --location "westus" --name "ResourceGroupName" |
| 125 | +> ``` |
| 126 | +> _To see a list of valid locations, use `az account list-locations`_ |
| 127 | +
|
| 128 | +
|
| 129 | +```bash |
| 130 | +# Use Azure CLI to create the LUIS Key resource on Azure |
| 131 | +az cognitiveservices account create --kind "luis" --name "NewLuisResourceName" --sku "S0" --location "westus" --subscription "AzureSubscriptionGuid" -g "ResourceGroupName" |
| 132 | +``` |
| 133 | +
|
| 134 | +The command will output a response similar to the JSON below: |
| 135 | + |
| 136 | +```json |
| 137 | +{ |
| 138 | + "endpoint": "https://westus.api.cognitive.microsoft.com/luis/v2.0", |
| 139 | + "etag": "\"########-####-####-####-############\"", |
| 140 | + "id": "/subscriptions/########-####-####-####-############/resourceGroups/ResourceGroupName/providers/Microsoft.CognitiveServices/accounts/NewLuisResourceName", |
| 141 | + "internalId": "################################", |
| 142 | + "kind": "luis", |
| 143 | + "location": "westus", |
| 144 | + "name": "NewLuisResourceName", |
| 145 | + "provisioningState": "Succeeded", |
| 146 | + "resourceGroup": "ResourceGroupName", |
| 147 | + "sku": { |
| 148 | + "name": "S0", |
| 149 | + "tier": null |
| 150 | + }, |
| 151 | + "tags": null, |
| 152 | + "type": "Microsoft.CognitiveServices/accounts" |
| 153 | +} |
| 154 | +``` |
| 155 | + |
| 156 | + |
| 157 | + |
| 158 | +Take the output from the previous command and create a JSON file in the following format: |
| 159 | + |
| 160 | +```json |
| 161 | +{ |
| 162 | + "azureSubscriptionId": "00000000-0000-0000-0000-000000000000", |
| 163 | + "resourceGroup": "ResourceGroupName", |
| 164 | + "accountName": "NewLuisResourceName" |
| 165 | +} |
| 166 | +``` |
| 167 | + |
| 168 | +### 2. Retrieve ARM access token via Azure CLI |
| 169 | + |
| 170 | +```bash |
| 171 | +az account get-access-token --subscription "AzureSubscriptionGuid" |
| 172 | +``` |
| 173 | + |
| 174 | +This will return an object that looks like this: |
| 175 | + |
| 176 | +```json |
| 177 | +{ |
| 178 | + "accessToken": "eyJ0eXAiOiJKVtokentokentokentokentokeng1dCI6Ik4tbEMwbi05REFMcXdodUhZbkhRNjNHZUNYYyIsItokenI6Ik4tbEMwbi05REFMcXdodUhZbkhRNjNHZUNYYyJ9.eyJhdWQiOiJodHRwczovL21hbmFnZW1lbnQuY29yZS53aW5kb3dzLm5ldC8iLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMWRiNDcvIiwiaWF0IjoxNTUzODc3MTUwLCJuYmYiOjE1NTM4NzcxNTAsImV4cCI6MTU1Mzg4MTA1MCwiX2NsYWltX25hbWVzIjp7Imdyb3VwcyI6InNyYzEifSwiX2NsYWltX3NvdXJjZXMiOnsic3JjMSI6eyJlbmRwb2ludCI6Imh0dHBzOi8vZ3JhcGgud2luZG93cy5uZXQvNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3VzZXJzL2ZmZTQyM2RkLWJhM2YtNDg0Ny04NjgyLWExNTI5MDA4MjM4Ny9nZXRNZW1iZXJPYmplY3RzIn19LCJhY3IiOiIxIiwiYWlvIjoiQVZRQXEvOEtBQUFBeGVUc201NDlhVHg4RE1mMFlRVnhGZmxxOE9RSC9PODR3QktuSmRqV1FqTkkwbmxLYzB0bHJEZzMyMFZ5bWZGaVVBSFBvNUFFUTNHL0FZNDRjdk01T3M0SEt0OVJkcE5JZW9WU0dzd0kvSkk9IiwiYW1yIjpbIndpYSIsIm1mYSJdLCJhcHBpZCI6IjA0YjA3Nzk1LThkZGItNDYxYS1iYmVlLTAyZjllMWJmN2I0NiIsImFwcGlkYWNyIjoiMCIsImRldmljZWlkIjoiNDhmNDVjNjEtMTg3Zi00MjUxLTlmZWItMTllZGFkZmMwMmE3IiwiZmFtaWx5X25hbWUiOiJHdW0iLCJnaXZlbl9uYW1lIjoiU3RldmVuIiwiaXBhZGRyIjoiMTY3LjIyMC4yLjU1IiwibmFtZSI6IlN0ZXZlbiBHdW0iLCJvaWQiOiJmZmU0MjNkZC1iYTNmLTQ4NDctODY4Mi1hMTUyOTAwODIzODciLCJvbnByZW1fc2lkIjoiUy0xLTUtMjEtMjEyNzUyMTE4NC0xNjA0MDEyOTIwLTE4ODc5Mjc1MjctMjYwOTgyODUiLCJwdWlkIjoiMTAwMzdGRkVBMDQ4NjlBNyIsInJoIjoiSSIsInNjcCI6InVzZXJfaW1wZXJzb25hdGlvbiIsInN1YiI6Ik1rMGRNMWszN0U5ckJyMjhieUhZYjZLSU85LXVFQVVkZFVhNWpkSUd1Nk0iLCJ0aWQiOiI3MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMWRiNDciLCJ1bmlxdWVfbmFtZSI6InN0Z3VtQG1pY3Jvc29mdC5jb20iLCJ1cG4iOiJzdGd1bUBtaWNyb3NvZnQuY29tIiwidXRpIjoiT2w2NGN0TXY4RVNEQzZZQWRqRUFtokenInZlciI6IjEuMCJ9.kFAsEilE0mlS1pcpqxf4rEnRKeYsehyk-gz-zJHUrE__oad3QjgDSBDPrR_ikLdweynxbj86pgG4QFaHURNCeE6SzrbaIrNKw-n9jrEtokenlosOxg_0l2g1LeEUOi5Q4gQREAU_zvSbl-RY6sAadpOgNHtGvz3Rc6FZRITfkckSLmsKAOFoh-aWC6tFKG8P52rtB0qVVRz9tovBeNqkMYL49s9ypduygbXNVwSQhm5JszeWDgrFuVFHBUP_iENCQYGQpEZf_KvjmX1Ur1F9Eh9nb4yI2gFlKncKNsQl-tokenK7-tokentokentokentokentokentokenatoken", |
| 179 | + "expiresOn": "2200-12-31 23:59:59.999999", |
| 180 | + "subscription": "AzureSubscriptionGuid", |
| 181 | + "tenant": "tenant-guid", |
| 182 | + "tokenType": "Bearer" |
| 183 | +} |
| 184 | +``` |
| 185 | + |
| 186 | +The value needed for the next step is the `"accessToken"`. |
| 187 | + |
| 188 | +### 3. Use `luis add appazureaccount` to pair your LUIS resource with a LUIS Application |
| 189 | + |
| 190 | +```bash |
| 191 | +luis add appazureaccount --in "path/to/created/requestBody.json" --appId "LuisAppId" --authoringKey "LuisAuthoringKey" --armToken "accessToken" |
| 192 | +``` |
| 193 | + |
| 194 | +If successful, it should yield a response like this: |
| 195 | + |
| 196 | +```json |
| 197 | +{ |
| 198 | + "code": "Success", |
| 199 | + "message": "Operation Successful" |
| 200 | +} |
| 201 | +``` |
| 202 | + |
| 203 | +### 4. See the LUIS Cognitive Services' keys |
| 204 | + |
| 205 | +```bash |
| 206 | +az cognitiveservices account keys list --name "NewLuisResourceName" --subscription "AzureSubscriptionGuid" -g "ResourceGroupName" |
| 207 | +``` |
| 208 | + |
| 209 | +This will return an object that looks like this: |
| 210 | + |
| 211 | +```json |
| 212 | +{ |
| 213 | + "key1": "9a69####dc8f####8eb4####399f####", |
| 214 | + "key2": "####f99e####4b1a####fb3b####6b9f" |
| 215 | +} |
| 216 | +``` |
0 commit comments