Как вы можете использовать DynamoDb Persistence Adapter в Pyhon SDK - PullRequest
0 голосов
/ 22 июня 2019

Может ли кто-нибудь дать мне пример кода для использования DynamoDb Persistence Adapter в Python?

Вот официальные документы, но я не могу понять, как их использовать.https://alexa -skills-kit-python-sdk.readthedocs.io / en / latest / api / dynamicodb_persistence.html

Спасибо.

1 Ответ

0 голосов
/ 04 июля 2019

Во-первых, вам нужно создать таблицу в DynamoDB, это можно сделать через консоль AWS.

Затем создайте ключ доступа AWS и секретную пару из своей учетной записи AWS.Они понадобятся вам для аутентификации и подключения к «Динамо» из кода навыка.

Затем, в вашем коде, установите соединение после вызова, вы можете поместить его в перехватчик или в начало каждого обработчика.

import boto3
from ask_sdk_dynamodb.adapter import DynamoDbAdapter, user_id_partition_keygen

dynamodb = boto3.resource('dynamodb',
                          region_name="eu-west-1",
                          aws_access_key_id="your_access_key",
                          aws_secret_access_key="your_secret_key")
dynamo_client = DynamoDbAdapter(table_name="your_table_name",
                                partition_key_name="user_id",  # the ID you choose while creating the table
                                partition_keygen=user_id_partition_keygen,  # default
                                create_table=False,  # default
                                dynamodb_resource=dynamodb)

Как видите, я указал user_id_partition_keygen, который является значением по умолчанию, это означает, что каждый элемент, хранящийся в вашей таблице, будет использовать UserId в качестве основного идентификатора, поэтому вы не сможетеиметь два элемента для одного и того же пользователя, вы можете изменить это так, как вам удобно.

После установки соединения вы можете просто сохранить словарь атрибутов, который в этом случае будет подключен к userId, или прочитатьатрибуты пользователя.

# Store attributes for the user
attr = {
    'last_request_time': datetime.now().strftime("%Y%m%d"),
}
self.dynamo_client.save_attributes(request_envelope=handler_input.request_envelope, attributes=attr)

# Get user attributes
user_attr = self.dynamo_client.get_attributes(request_envelope=handler_input.request_envelope)
...