この続きです。
前回は文字化けの正体がわからないままだったので、どうにもできなかったが、
@yoshiro_mihiraさん、@mstk0531さんからのコメントを元に自分なりのフローに当てはめてみたところ、なんとか上手くいったので書き残しておく。
Alexaの買い物リストを流用したい人は最終的なアウトプットがそれぞれ別々だと思うのでデコード後の処理は適当に読みかえてもらえるとありがたい。
文字コード関連
@mstk0531さんのこの記事にてnode-redのnode-red-contrib-iconvで文字コード変換なら使用できる状態になることがわかった。
もじばけらったで文字コードを改めて調査。
お二人のいうように[ISO-8859-1]→[UTF-8]ということを確認。
そのうえでPythonで試行錯誤した結果、こんな感じに。
def lambda_handler(event, context):
get_item_name = event['item']
bytes_data = get_item_name.encode("ISO-8859-1")
str_data = bytes_data.decode("UTF-8")
get_item_name = str_data
これでUTF-8として読み取れるようになった。
いざ書いてみるとシンプルな構成。
その後の処理
ここからMail送信すればWunderListに登録できるけど、前に作ったのを流用すりゃいいと思ったので
WunderListにMailで登録とSKILLとIFTTTでWunderListに登録の二つを適当に流用して、もう一回IFTTTに返してそこからMail送信。
なので、ここではPOSTでIFTTTへPOSTするのみ。
こんな感じに。
# IFTTT の Makerへ送信
url = 'https://maker.ifttt.com/trigger/towunderlist/with/key/XXXXXXXXXXXXXXXXXXX'
data = {
'value1': get_item_name,
}
headers = {
'Content-Type': 'application/json',
}
req = urllib.request.Request(url, json.dumps(data).encode(), headers)
with urllib.request.urlopen(req) as res:
body = res.read()
Alexa→IFTTT→Lambda→IFTTT→Gmail→WunderListというよくわからない経路になっているが、買い物リストに登録したものが文字化けしないでWunderListに再び登録できるようになった。
よかったよかった。
感謝
@yoshiro_mihiraさん、@mstk0531さんありがとうございました。