この記事について
JAWS-UG CLI専門支部 #95 Lex入門 (秋のVUIキャンペーン第1弾)で実施するハンズオン用の手順書です。
前提条件
必要な権限
作業にあたっては、以下の権限を有したIAMユーザもしくはIAMロールを利用してください。
- 以下のサービスの対するフルコントロール権限
- IAM
- Lex
0. 準備
0.1. リージョンを指定
バージニアリージョンを利用します。(リンク先にサービスが提供されているリージョンの一覧が記載されています)
export AWS_DEFAULT_REGION="us-east-1"
0.2. 資格情報を確認
aws configure list
インスタンスプロファイルを設定したEC2インスタンスでアクセスキーを設定せずに実行した場合、以下のようになります。
Name Value Type Location
---- ----- ---- --------
profile <not set> None None
access_key ****************QSAA iam-role
secret_key ****************c1xY iam-role
region us-west-2 env AWS_DEFAULT_REGION
0.3. バージョン確認
aws --version
(可能な限り最新版を利用しましょう)
0.4. バージョンアップ(必要に応じて)
sudo pip install -U awscli
1. カスタムスロットタイプの作成
スロットとは、ボットがクライアントから取得したい情報です。
例えば、何かの注文を受け付けるボットを作成したいとします。
その際、ボットは「何を注文したいのか」「いつ受け取りたいのか」などをクライアントから取得する必要があります。
このように、取得した情報の一つ一つをスロットといいます。
スロットタイプとは、スロットの中身を事前定義したものです。
例えば、パスタの注文を受け付けるボットを作成するとします。
その場合、スロットタイプとして「ミートソース」「シーフード」「カルボナーラ」などの商品名をあらかじめ事前に定義しておく必要があります。
このハンズオンでは、花の注文を受け付けるボットを作成します
マネージメントコンソールから簡単に同様のボットを作成することが可能です。
作成するスロットは以下の通りです。
- 注文する花
- 花を取りに行く日
- 花を取りに行く時刻
「花を取りに行く日」および「花を取りに行く時刻」は、後述するビルトインスロットタイプで定義済みのため、「注文する花」のみをカスタムスロットタイプとして定義します。
1.1. カスタムスロットの定義
SLOT_TYPE_FILE_NAME="FlowerTypes.json"
cat << EOF > ${SLOT_TYPE_FILE_NAME}
{
"enumerationValues": [
{
"value": "tulips"
},
{
"value": "lilies"
},
{
"value": "roses"
}
],
"name": "FlowerTypes",
"description": "Types of flowers to pick up"
}
EOF
cat ${SLOT_TYPE_FILE_NAME}
jsonlint -q ${SLOT_TYPE_FILE_NAME}
1.2. パラメーターの指定
カスタムスロットタイプ名を指定します。
SLOT_TYPE_NAME="FlowerTypes"
同名のカスタムスロットタイプが存在しないことを確認します。
aws lex-models get-slot-types \
--name-contains ${SLOT_TYPE_NAME}
{
"slotTypes": []
}
1.3. カスタムスロットタイプの作成
変数の確認
cat << EOF
SLOT_TYPE_NAME:${SLOT_TYPE_NAME}
SLOT_TYPE_FILE_NAME:${SLOT_TYPE_FILE_NAME}
EOF
SLOT_TYPE_NAME:FlowerTypes
SLOT_TYPE_FILE_NAME:FlowerTypes.json
カスタムスロットタイプの作成
aws lex-models put-slot-type \
--name ${SLOT_TYPE_NAME} \
--cli-input-json file://${SLOT_TYPE_FILE_NAME}
{
"enumerationValues": [
{
"value": "tulips"
},
{
"value": "lilies"
},
{
"value": "roses"
}
],
"name": "FlowerTypes",
"checksum": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"version": "$LATEST",
"lastUpdatedDate": 1507444439.456,
"createdDate": 1507444439.456,
"valueSelectionStrategy": "ORIGINAL_VALUE",
"description": "Types of flowers to pick up"
}
作成したリソースの確認
作成したスロットタイプを確認します。
aws lex-models get-slot-types \
--name-contains ${SLOT_TYPE_NAME}
{
"slotTypes": [
{
"version": "$LATEST",
"createdDate": 1507444439.456,
"name": "FlowerTypes",
"lastUpdatedDate": 1507444439.456,
"description": "Types of flowers to pick up"
}
]
}
スロットタイプの最新バージョンを取得します。
SLOT_TYPE_VERSION=$(aws lex-models get-slot-type-versions \
--name ${SLOT_TYPE_NAME} \
--query "sort_by(slotTypes,&lastUpdatedDate)[0].version" \
--output text) \
&& echo ${SLOT_TYPE_VERSION}
$LATEST
スロットタイプの内容を確認します。
aws lex-models get-slot-type \
--name ${SLOT_TYPE_NAME} \
--slot-type-version ${SLOT_TYPE_VERSION}
{
"enumerationValues": [
{
"value": "tulips"
},
{
"value": "lilies"
},
{
"value": "roses"
}
],
"name": "FlowerTypes",
"checksum": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"version": "$LATEST",
"lastUpdatedDate": 1507444439.456,
"createdDate": 1507444439.456,
"valueSelectionStrategy": "ORIGINAL_VALUE",
"description": "Types of flowers to pick up"
}
2. 補足:ビルトインスロット
既存のビルトインスロットタイプを確認します。
Lexでは、一般的に利用されるスロットタイプが事前定義されており、インテント(次章で説明)の作成時に利用することが可能です。
2.1. 一覧の確認
ビルトインスロットタイプの一覧を表示します。
各ビルトインスロットタイプの詳細はドキュメントを確認してください。
aws lex-models get-builtin-slot-types
{
"nextToken": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
",
"slotTypes": [
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.Actor"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.AdministrativeArea"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.AggregateRating"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.Airline"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.Airport"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.Animal"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.Artist"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.AT_CITY"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.AT_REGION"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.Athlete"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.Author"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.Book"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.BookSeries"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.BroadcastChannel"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.CivicStructure"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.Color"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.Comic"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.Corporation"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.Country"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.CreativeWorkType"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.DATE"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.DayOfWeek"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.DE_CITY"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.DE_FIRST_NAME"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.DE_REGION"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.Dessert"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.DeviceType"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.Director"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.Drink"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.DURATION"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.EducationalOrganization"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.EmailAddress"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.EUROPE_CITY"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.EventType"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.Festival"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.FictionalCharacter"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.FinancialService"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.Food"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.FoodEstablishment"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.FOUR_DIGIT_NUMBER"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.Game"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.GB_CITY"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.GB_FIRST_NAME"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.GB_REGION"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.Genre"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.Landform"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.LandmarksOrHistoricalBuildings"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.Language"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.LocalBusiness"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.LocalBusinessType"
}
]
}
{
"slotTypes": [
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.MedicalOrganization"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.Month"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.Movie"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.MovieSeries"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.MovieTheater"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.MusicAlbum"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.MusicCreativeWorkType"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.MusicEvent"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.MusicGroup"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.Musician"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.MusicPlaylist"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.MusicRecording"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.MusicVenue"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.MusicVideo"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.NUMBER"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.Organization"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.Percentage"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.Person"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.PhoneNumber"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.PostalAddress"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.Professional"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.ProfessionalType"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.RadioChannel"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.Residence"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.Room"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.ScreeningEvent"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.Service"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.SocialMediaPlatform"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.SoftwareApplication"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.SoftwareGame"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.SpeedUnit"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.Sport"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.SportsEvent"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.SportsTeam"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.StreetAddress"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.TelevisionChannel"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.TIME"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.TVEpisode"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.TVSeason"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.TVSeries"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.US_CITY"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.US_FIRST_NAME"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.US_LAST_NAME"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.US_STATE"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.VideoGame"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.WeatherCondition"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.WeightUnit"
},
{
"supportedLocales": [
"en-US"
],
"signature": "AMAZON.WrittenCreativeWorkType"
}
]
}
以上です。