<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>api.ai | DL FreeTime</title>
	<atom:link href="https://www.ct-innovation.blog/dl-freetime/tag/api-ai/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.ct-innovation.blog/dl-freetime</link>
	<description>Start studying deep learning in my Free time</description>
	<lastBuildDate>Wed, 28 Feb 2024 05:22:57 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.2</generator>

<image>
	<url>https://www.ct-innovation.blog/dl-freetime/wp-content/uploads/2024/02/cropped-cooltext289278806579247-32x32.png</url>
	<title>api.ai | DL FreeTime</title>
	<link>https://www.ct-innovation.blog/dl-freetime</link>
	<width>32</width>
	<height>32</height>
</image> 
<atom:link rel="hub" href="https://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="https://pubsubhubbub.superfeedr.com"/><atom:link rel="hub" href="https://websubhub.com/hub"/>	<item>
		<title>【GoogleHome】仮想通貨のレートを喋らせてみた#1</title>
		<link>https://www.ct-innovation.blog/dl-freetime/gadget/245/</link>
					<comments>https://www.ct-innovation.blog/dl-freetime/gadget/245/#respond</comments>
		
		<dc:creator><![CDATA[Yuki]]></dc:creator>
		<pubDate>Thu, 25 Oct 2018 03:57:22 +0000</pubDate>
				<category><![CDATA[AI/MachineLearning]]></category>
		<category><![CDATA[Dialogflow]]></category>
		<category><![CDATA[GoogleHome]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[ガジェット]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[api.ai]]></category>
		<category><![CDATA[Programming]]></category>
		<guid isPermaLink="false">http://ct-innovation01.xyz/DL-Freetime/?p=245</guid>

					<description><![CDATA[スマートスピーカーは、対話型の音声操作に対応したAIアシスタントを搭載したスピーカーであり、AIスピーカーとも呼ばれます。音声だけで音楽鑑賞や調べ物、買い物などのサービスを利用できる新しいデバイスです。各メーカーが開発を [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">スマートスピーカーは、対話型の音声操作に対応したAIアシスタントを搭載したスピーカーであり、AIスピーカーとも呼ばれます。音声だけで音楽鑑賞や調べ物、買い物などのサービスを利用できる新しいデバイスです。各メーカーが開発を進めており、さまざまな選択肢が存在します。</p>



<p class="wp-block-paragraph">いいから何やったのか知りたい方は、『どういう手順でしゃべらせる？』からお読みください。</p>



<span id="more-245"></span>



<h2 class="wp-block-heading">主なスマートスピーカー</h2>



<p class="wp-block-paragraph">以下は、2018年10月現在の主要なスマートスピーカーの一覧です。各社が提供しているスマートスピーカーには、Google Home、Amazon Echo、LINE Clova、Microsoft Invoke、Apple HomePodなどがあります。</p>



<figure class="wp-block-table"><div class="scrollable-table"><table><tbody><tr><td>Google Home</td><td>Google</td><td>Google Assistant</td><td class="has-text-align-center" data-align="center"><a rel="noopener" target="_blank" href="https://store.google.com/product/google_home"><img decoding="async" class="aligncenter size-thumbnail wp-image-817" src="https://ct-innovation01.xyz/DL-Freetime/wp/wp-content/uploads/2018/10/00000003811840_A01-150x150.jpg" alt="" width="100" height="100"></a></td><td>直径: 96.4 mm<br>高さ: 142.8 mm</td><td>15,120円（税込）</td><td><a rel="noopener" target="_blank" class="buy_now" href="https://store.google.com/product/google_home">Buy Now</a></td></tr><tr><td>Amazon Echo</td><td>Amazon</td><td>Alexa</td><td class="has-text-align-center" data-align="center"><img decoding="async" src="https://www.ct-innovation.blog/dl-freetime/wp-content/uploads/2018/10/710GmYYsbTL._AC_SX679_.jpg" alt="" style="width: 60px;"><br><a rel="noopener" target="_blank" href="https://www.amazon.co.jp/dp/B071ZF5KCM/ref=as_li_ss_il?ie=UTF8&amp;linkCode=li1&amp;tag=lightstry-22&amp;linkId=5c28b0dc0c09fbb069ff9c6b9b35c9aa&amp;language=ja_JP"></a></td><td>直径: 88 mm<br>高さ: 148 mm</td><td>11,980円（税込）</td><td><a rel="noopener" target="_blank" href="https://amzn.to/3OXurGz">Buy Now</a></td></tr><tr><td>Clova</td><td>LINE</td><td>Clova</td><td class="has-text-align-center" data-align="center"><img decoding="async" width="100" height="100" class="aligncenter size-thumbnail wp-image-812" src="https://ct-innovation01.xyz/DL-Freetime/wp/wp-content/uploads/2018/10/00000003868970_A01-150x150.jpg" alt=""></td><td>直径: 201.05 mm<br>高さ: 139.84 mm</td><td>14,000円（税込）</td><td><a rel="nofollow noopener" target="_blank" class="buy_now" style="word-wrap: break-word;" href="https://hb.afl.rakuten.co.jp/hgc/1744d1ab.871080de.1744d1ac.4bb08589/?pc=https%3A%2F%2Fitem.rakuten.co.jp%2Fbook%2F15596606%2F&amp;m=http%3A%2F%2Fm.rakuten.co.jp%2Fbook%2Fi%2F19282020%2F&amp;link_type=text&amp;ut=eyJwYWdlIjoiaXRlbSIsInR5cGUiOiJ0ZXh0Iiwic2l6ZSI6IjI0MHgyNDAiLCJuYW0iOjEsIm5hbXAiOiJyaWdodCIsImNvbSI6MSwiY29tcCI6ImxlZnQiLCJwcmljZSI6MCwiYm9yIjoxLCJjb2wiOjAsImJidG4iOjF9">Buy Now</a></td></tr><tr><td>Invoke</td><td>Microsoft</td><td>Cortana</td><td class="has-text-align-center" data-align="center"><img decoding="async" width="100" height="100" class="aligncenter size-thumbnail wp-image-814" src="https://ct-innovation01.xyz/DL-Freetime/wp/wp-content/uploads/2018/10/yu_invoke1-150x150.jpg" alt=""></td><td>直径：106.68 mm<br>高さ：241.30 mm</td><td>199ドル</td><td>日本未発売</td></tr><tr><td>HomePod</td><td>Apple</td><td>Siri</td><td class="has-text-align-center" data-align="center"><a rel="noopener" target="_blank" href="https://www.apple.com/homepod/"><img decoding="async" class="aligncenter size-thumbnail wp-image-813" src="https://ct-innovation01.xyz/DL-Freetime/wp/wp-content/uploads/2018/10/homepod_standing_black_inline.large_-150x150.jpg" alt="" width="100" height="100"></a></td><td>直径: 172 mm<br>高さ: 142 mm</td><td>349ドル</td><td><a rel="nofollow noopener" target="_blank" href="https://www.apple.com/homepod/">Buy Now</a></td></tr></tbody></table></div></figure>



<h3 class="wp-block-heading">補足）その他のスマートスピーカー</h3>



<p class="wp-block-paragraph">上記にはないが、スマートスピーカーだと打ち出して販売されている製品がいくつか見受けられると思います。<br>これらを表に載せなかったのは、他社のAIアシスタントを搭載しているからです。例えばSonyのスマートスピーカーであればGoogleAssistantを搭載しているといった具合です。今回の記事ではAIアシスタントが独自のものだけをリストアップしました。</p>



<h2 class="wp-block-heading">GoogleHomeとは</h2>



<p class="wp-block-paragraph">Google Homeは、2016年に北米で発売されたGoogle製のスマートスピーカーです。Google Assistantを搭載しており、さまざまな操作を音声で行えます。音楽再生や天気予報の確認、交通状況の確認などが可能です。また、スマート家電との連携も可能であり、家庭内の操作をより便利にします。</p>



<p class="wp-block-paragraph">（2024年現在）私の家には、GoogleHomeが3台あり活用中です。</p>



<p class="wp-block-paragraph"><iframe class="embed-card embed-webcard" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" title="スマートホーム、エンターテイメント システム - Google ストア" src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fstore.google.com%2Fcategory%2Fhome_entertainment" frameborder="0" scrolling="no"></iframe><cite class="hatena-citation"><a rel="noopener" target="_blank" href="https://store.google.com/category/home_entertainment">store.google.com</a></cite></p>



<h3 class="wp-block-heading">スマートスピーカーの活用例</h3>



<p class="wp-block-paragraph">スマートスピーカーは、日常生活をより便利にするためのツールとして活用されています。以下は、Google Homeを活用した具体的な使用例です。</p>



<div class="wp-block-cocoon-blocks-tab-box-1 blank-box bb-tab bb-point block-box">
<ul class="wp-block-list">
<li>音楽の再生（Google Play MusicやSpotifyなど）</li>



<li>天気予報の確認</li>



<li>地図上での場所の調査</li>



<li>交通状況の確認</li>



<li>言葉の意味や翻訳の確認</li>



<li>アラームやタイマーの設定</li>



<li>スケジュールの確認（Googleカレンダー）</li>



<li>ラジオの再生（日経電子版NewsやRadikoなど）</li>
</ul>
</div>



<p class="wp-block-paragraph">また、スマート家電との連携により、テレビやエアコン、照明などを音声で操作することも可能です。</p>



<h3 class="wp-block-heading">この開発を思いついたきっかけ</h3>



<p class="wp-block-paragraph">発売当初からとても気になっていたのですが、飽きっぽい自分の性格から考えると結局置物になるよなと思いつつスルーをしていた所、昨年末（2017/12）に半額で販売するというニュースが流れたので、miniの価格（約7000円）でHomeが買えるならと購入し、テレビの横に鎮座させました。</p>



<p class="wp-block-paragraph">意気揚々と初期設定を済ませてからの一週間ぐらいは『アラームかけて～、音楽かけて～、ニュース聞きたい～』と色々話しかけていました。</p>



<p class="wp-block-paragraph">しかし、購入当初夢見た『テレビをつけて』とか『電気をつけて』とか『エアコンつけて』とかは対応しているスマート家電でない場合、スマートリモコンがないので物置になりそう。</p>



<p class="wp-block-paragraph">流石に二週間でただの置物に成り下がる（7000円）は痛手。とりあえずなんかしよう&#8230;</p>



<h2 class="wp-block-heading">スマートスピーカーの設定方法</h2>



<p class="wp-block-paragraph">なお、スマートスピーカーを最大限に活用するためには、適切な設定が必要です。以下は、Google Homeを例にした設定方法の一例です。</p>



<p class="wp-block-paragraph">DialogFlow（旧Api.ai）を使えばできます。</p>



<p class="wp-block-paragraph">GoogleHome内臓のGoogleAssistantがDialogFlowと接続してくれるDialogFlowでこういう問いかけにはこういう風に返すとかの設定を行えば正しく返答してくれます。</p>



<p class="wp-block-paragraph">そこからpython使っていろいろする場合は、サーバにプログラムをアップロード（正確にはデプロイ）して、Webhookするとかなんとか。。。あんまりよく分からない。わかりやすく図示すると私がやりたいことをイメージに起こすとこんな感じだろうと目論んですすめることにする。</p>



<figure class="wp-block-image aligncenter"><img decoding="async" width="780" height="585" src="https://ct-innovation01.xyz/DL-Freetime/wp/wp-content/uploads/2018/06/20180202132833.jpg" alt="" class="wp-image-156" srcset="https://www.ct-innovation.blog/dl-freetime/wp-content/uploads/2018/06/20180202132833.jpg 780w, https://www.ct-innovation.blog/dl-freetime/wp-content/uploads/2018/06/20180202132833-300x225.jpg 300w, https://www.ct-innovation.blog/dl-freetime/wp-content/uploads/2018/06/20180202132833-768x576.jpg 768w" sizes="(max-width: 780px) 100vw, 780px" /></figure>



<div class="wp-block-cocoon-blocks-tab-box-1 blank-box bb-tab bb-memo block-box">
<ol class="wp-block-list">
<li>人（自分）が話しかける</li>



<li>GoogleAssistantがDialogFlowと接続する</li>



<li>DialogFlowとサーバ（heroku）をWebhookで通信する</li>



<li>サーバ（heroku）にデプロイしておいた自作Pythonが動作する</li>



<li>自作のPythonプログラムがCoincheckのAPIを叩いてレートをjson形式で取得する</li>



<li>サーバからDialogFlowにGoogleAssistantで読み込めるjson形式で返却する</li>



<li>GoogleAssistantがGoogleHomeで結果を返す</li>
</ol>
</div>



<h2 class="wp-block-heading">準備物</h2>



<ul class="wp-block-list">
<li>Python3.5</li>



<li>Googleアカウント+DialogFlowアカウント</li>



<li>サーバ（無いならherokuアカウント）</li>



<li>（heroku使うなら）GitHubアカウントがあると楽</li>



<li>GoogleHome</li>
</ul>



<h2 class="wp-block-heading">DialogFlowの設定</h2>



<h3 class="wp-block-heading">DialogFlowで新規agentの作成</h3>



<p class="wp-block-paragraph"><a rel="noopener" target="_blank" href="https://console.dialogflow.com/api-client/#/login">Dialogflow</a>にログインして、[Create new agent]で新規作成。</p>



<figure class="wp-block-image aligncenter"><img decoding="async" src="https://ct-innovation01.xyz/DL-Freetime/wp/wp-content/uploads/2018/06/20180202134724.png" alt="" class="wp-image-72"/></figure>



<h3 class="wp-block-heading">反応させたい単語を登録</h3>



<p class="wp-block-paragraph">今回は仮想通貨の銘柄を反応させて、日本円とのレートを答えてほしい。よって、入力として受け取る単語（ビットコインとかイーサリウムとか）を<code style="box-sizing: inherit; font-family: SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace; padding: 0.1em 0.4em; font-size: 16px; color: #4a4a4a; background-color: #eeeeee; border-radius: 3px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">Entities</code>に登録します。左側の<code style="box-sizing: inherit; font-family: SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace; padding: 0.1em 0.4em; font-size: 16px; color: #4a4a4a; background-color: #eeeeee; border-radius: 3px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">Entities</code>を選択して<code style="box-sizing: inherit; font-family: SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace; padding: 0.1em 0.4em; font-size: 16px; color: #4a4a4a; background-color: #eeeeee; border-radius: 3px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">CREATE ENTITY</code>で新しい単語帳を作成します。</p>



<figure class="wp-block-image aligncenter"><img decoding="async" src="https://ct-innovation01.xyz/DL-Freetime/wp/wp-content/uploads/2018/06/20180202135848.png" alt="" class="wp-image-73"/></figure>



<p class="wp-block-paragraph">必要な単語と文字揺れが起こってもいいように日本語とか略称とかを入れて[SAVE]で保存します。</p>



<h3 class="wp-block-heading">どんな反応をさせたいかを登録</h3>



<p class="wp-block-paragraph">次に、『ビットコインの値段は？』と聞いたら『今の価格はXXX円です。』といった返答が欲しいのでQ&amp;Aのフローを登録していきます。登録する先は<code style="box-sizing: inherit; font-family: SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace; padding: 0.1em 0.4em; font-size: 16px; color: #4a4a4a; background-color: #eeeeee; border-radius: 3px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">Intents</code>です。左側の<code style="box-sizing: inherit; font-family: SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace; padding: 0.1em 0.4em; font-size: 16px; color: #4a4a4a; background-color: #eeeeee; border-radius: 3px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">Intents</code>を選択して<code style="box-sizing: inherit; font-family: SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace; padding: 0.1em 0.4em; font-size: 16px; color: #4a4a4a; background-color: #eeeeee; border-radius: 3px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">CREATE INTENT</code>で新しい単語帳を作成します。</p>



<figure class="wp-block-image aligncenter"><img decoding="async" src="https://ct-innovation01.xyz/DL-Freetime/wp/wp-content/uploads/2018/06/20180202145140.png" alt="" class="wp-image-74"/></figure>



<p class="wp-block-paragraph"><code style="box-sizing: inherit; font-family: SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace; padding: 0.1em 0.4em; font-size: 16px; color: #4a4a4a; background-color: #eeeeee; border-radius: 3px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">Entities</code>に正しく登録されていれば、蛍光ペンでなぞったような色が付きます。</p>



<p class="wp-block-paragraph">その他の設定として重要な所はActionの所に入力する任意の文字列が重要です（後述）。また、Responseはとりあえず返答をどうするかなので上手く結果が返ってこなかった場合を想定して、「わかりませんでした」としておきました。</p>



<p class="wp-block-paragraph">最後に、Fullfilmentについてはどちらもチェックを付けておいてください。全ての設定が終わったら[SAVE]で保存します。</p>



<figure class="wp-block-image aligncenter"><img decoding="async" src="https://ct-innovation01.xyz/DL-Freetime/wp/wp-content/uploads/2018/06/20180202145642.png" alt="" class="wp-image-75"/></figure>



<p class="wp-block-paragraph">最後に一つDialogflowでの設定がありますが、今はできないので一旦作業を中断して次に進みます。</p>



<h3 class="wp-block-heading">GitHubの設定</h3>



<p class="wp-block-paragraph">自作のPythonファイルを利用して計算をしたりしたい場合は、サーバにファイルをアップロード（正確にはデプロイ）してあげる必要があります。その際に以下のGitHubを参考にしました。</p>



<p class="wp-block-paragraph"><iframe class="embed-card embed-webcard" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" title="dialogflow/fulfillment-webhook-weather-python" src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fgithub.com%2Fdialogflow%2Ffulfillment-webhook-weather-python" frameborder="0" scrolling="no"></iframe><cite class="hatena-citation"><a rel="noopener" target="_blank" href="https://github.com/dialogflow/fulfillment-webhook-weather-python">github.com</a></cite></p>



<h3 class="wp-block-heading">herokuへデプロイするための準備（プログラムなど各ファイル作成）</h3>



<p class="wp-block-paragraph">下のGitHubのデータ一式を一旦zip形式とかでダウンロードして、必要なものを利用して自分のGitHubアカウントにリポジトリを作成して、同様の校正でアップロードします。</p>



<p class="wp-block-paragraph">とりあえずこれだけあれば動作しましたっていう構成をスクショしたので貼っときます。</p>



<figure class="wp-block-image"><img decoding="async" src="https://ct-innovation01.xyz/DL-Freetime/wp/wp-content/uploads/2018/06/20180202153218-150x150.png" alt="" class="wp-image-76"/></figure>



<p class="wp-block-paragraph">まず、この中からapp.pyのコードを変更します。修正内容は割愛します。</p>



<pre class="wp-block-code python"><code>from __future__ import print_function
from future.standard_library import install_aliases
install_aliases()</code></pre>



<pre class="wp-block-code python"><code>from urllib.parse import urlparse, urlencode
from urllib.request import urlopen, Request
from urllib.error import HTTPError

import json
import os
import requests
from pandas import DataFrame

from flask import Flask
from flask import request
from flask import make_response
from flask import render_template

import sys
import logging

app = Flask(__name__)

app.logger.addHandler(logging.StreamHandler(sys.stdout))
app.logger.setLevel(logging.ERROR)
# Flask app should start in global layout

coins = {'Bitcoin': 'btc_jpy',
 'Ethereum': 'eth_jpy',
 'NEM': 'xem_jpy',
 'Bitcoin Cash': 'bch_jpy',
 'Ripple': 'xrp_jpy',
 'Monero': 'xmr_jpy',
 'Augur': 'rep_jpy',
 'Litecoin': 'ltc_jpy',
 'Lisk': 'lsk_jpy',
 'DASH': 'dash_jpy',
 'Factom': 'fct_jpy',
 'Ethereum Classic': 'etc_jpy',
 'Zcash': 'zec_jpy'
 }

@app.route('/webhook',methods=&#91;'POST'])
def webhook():
    req = request.get_json(silent=True, force=True)

    print("Request:")
    print(json.dumps(req, indent=4))

    res = processRequest(req)

    res = json.dumps(res, indent=4)
    # print(res)
    r = make_response(res)
    r.headers&#91;'Content-Type'] = 'application/json'
    return r

def processRequest(req):
    if req.get("result").get("action") != "check_Cryptocurrency": #Actionで設定した文字列に合わせる。
        return {}
    base_url = 'https://coincheck.com/api/rate/'
    cryptocurrency, currency = get_currency(req)
    if currency is None:
        return {}
    url = base_url + currency
    print(url)
    data = requests.get(url).json()
    res = makeWebhookResult(currency, data, cryptocurrency)
    return res

def get_currency(req):
    result = req.get("result")
    # requestライブラリでデータを取得して返却させる
    if cryptocurrency is None:
    　　return None
    return cryptocurrency, coins&#91;cryptocurrency]

def makeWebhookResult(urrency, data, cryptocurrency):
    # なんかうまいこと取得したデータを加工
    return {
    "speech": speech,
    "displayText": speech,
    "source": "apiai-crypt"
    }

if __name__ == '__main__':
    port = int(os.getenv('PORT', 5000))
    print("Starting app on port %d" % port)
    app.run(debug=False, port=port, host='0.0.0.0')</code></pre>



<p class="wp-block-paragraph">次にrequirement.txtの中身を記述します。</p>



<p class="wp-block-paragraph">Pythonは様々なOSSライブラリを利用して、プログラムを動作させていますがherokuにはライブラリは入っていません。この問題を解決するために、「requirement.txt」を使っています。このテキストファイルの中にインストールしたいライブラリとそのバージョンを書き込んでおくことでデプロイ時にこのライブラリもインストールしてくれます。</p>



<pre class="wp-block-code plaintext"><code>requests==2.18.4
pandas==0.22.0
Flask==0.10.1
future==0.16.0</code></pre>



<p class="wp-block-paragraph">もうひとつ重要な点があります。DialogflowのEntitiesにあるActionで任意に決めた文字列と合わせてください。</p>



<h2 class="wp-block-heading">まとめ</h2>



<p class="wp-block-paragraph">スマートスピーカーは、AIアシスタントを搭載した新しいデバイスであり、日常生活をより便利にするためのツールとして注目されています。適切な設定や活用方法を理解することで、より快適な生活を実現することができます。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.ct-innovation.blog/dl-freetime/gadget/245/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【GoogleHome】仮想通貨のレートを喋らせてみた#2</title>
		<link>https://www.ct-innovation.blog/dl-freetime/gadget/179/</link>
					<comments>https://www.ct-innovation.blog/dl-freetime/gadget/179/#respond</comments>
		
		<dc:creator><![CDATA[Yuki]]></dc:creator>
		<pubDate>Thu, 01 Nov 2018 02:54:19 +0000</pubDate>
				<category><![CDATA[AI/MachineLearning]]></category>
		<category><![CDATA[Dialogflow]]></category>
		<category><![CDATA[GoogleHome]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[ガジェット]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[api.ai]]></category>
		<category><![CDATA[DialogFlow]]></category>
		<category><![CDATA[webhook]]></category>
		<guid isPermaLink="false">http://ct-innovation01.xyz/DL-Freetime/?p=179</guid>

					<description><![CDATA[この記事では前回作成したプログラムをHerokuにデプロイして実際に、GoogleHomeに問いかけたら返答が来るところまでを解説します。GoogleHomeに仮想通貨のレートを喋らせるためのプログラムはこちらにあります [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">この記事では前回作成したプログラムをHerokuにデプロイして実際に、GoogleHomeに問いかけたら返答が来るところまでを解説します。GoogleHomeに仮想通貨のレートを喋らせるためのプログラムはこちらにあります。</p>



<div class="wp-block-cocoon-blocks-blogcard blogcard-type bct-prev">

<a target="_blank" href="https://www.ct-innovation.blog/dl-freetime/gadget/245/" title="【GoogleHome】仮想通貨のレートを喋らせてみた#1" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img decoding="async" width="320" height="180" src="https://www.ct-innovation.blog/dl-freetime/wp-content/uploads/2018/06/20180202132833-320x180.jpg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://www.ct-innovation.blog/dl-freetime/wp-content/uploads/2018/06/20180202132833-320x180.jpg 320w, https://www.ct-innovation.blog/dl-freetime/wp-content/uploads/2018/06/20180202132833-240x135.jpg 240w, https://www.ct-innovation.blog/dl-freetime/wp-content/uploads/2018/06/20180202132833-640x360.jpg 640w" sizes="(max-width: 320px) 100vw, 320px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【GoogleHome】仮想通貨のレートを喋らせてみた#1</div><div class="blogcard-snippet internal-blogcard-snippet">この記事は、スマートスピーカーを活用して仮想通貨の価格を取得する方法について解説しています。具体的には、Google Homeを例にして、DialogFlowを使用してユーザーの音声入力を処理し、CoincheckのAPIを介して仮想通貨の価格情報を取得し、その結果を音声で返す仕組みを構築する手順が示されています。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img decoding="async" src="https://www.google.com/s2/favicons?domain=https://www.ct-innovation.blog/dl-freetime" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">www.ct-innovation.blog</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2018.10.25</div></div></div></div></a>
</div>



<span id="more-179"></span>



<h2 class="wp-block-heading">おさらい：主なスマートスピーカー</h2>



<p class="wp-block-paragraph">以下は、2018年10月現在の主要なスマートスピーカーの一覧です。各社が提供しているスマートスピーカーには、Google Home、Amazon Echo、LINE Clova、Microsoft Invoke、Apple HomePodなどがあります。</p>



<figure class="wp-block-table"><div class="scrollable-table"><table><tbody><tr><td>Google Home</td><td>Google</td><td>Google Assistant</td><td class="has-text-align-center" data-align="center"><a rel="noopener" target="_blank" href="https://store.google.com/product/google_home"><img decoding="async" class="aligncenter size-thumbnail wp-image-817" src="https://ct-innovation01.xyz/DL-Freetime/wp/wp-content/uploads/2018/10/00000003811840_A01-150x150.jpg" alt="" width="100" height="100"></a></td><td>直径: 96.4 mm<br>高さ: 142.8 mm</td><td>15,120円（税込）</td><td><a rel="noopener" target="_blank" class="buy_now" href="https://store.google.com/product/google_home">Buy Now</a></td></tr><tr><td>Amazon Echo</td><td>Amazon</td><td>Alexa</td><td class="has-text-align-center" data-align="center"><img decoding="async" src="https://www.ct-innovation.blog/dl-freetime/wp-content/uploads/2018/10/710GmYYsbTL._AC_SX679_.jpg" alt="" style="width: 60px;"><br><a rel="noopener" target="_blank" href="https://www.amazon.co.jp/dp/B071ZF5KCM/ref=as_li_ss_il?ie=UTF8&amp;linkCode=li1&amp;tag=lightstry-22&amp;linkId=5c28b0dc0c09fbb069ff9c6b9b35c9aa&amp;language=ja_JP"></a></td><td>直径: 88 mm<br>高さ: 148 mm</td><td>11,980円（税込）</td><td><a rel="noopener" target="_blank" href="https://amzn.to/3OXurGz">Buy Now</a></td></tr><tr><td>Clova</td><td>LINE</td><td>Clova</td><td class="has-text-align-center" data-align="center"><img decoding="async" width="100" height="100" class="aligncenter size-thumbnail wp-image-812" src="https://ct-innovation01.xyz/DL-Freetime/wp/wp-content/uploads/2018/10/00000003868970_A01-150x150.jpg" alt=""></td><td>直径: 201.05 mm<br>高さ: 139.84 mm</td><td>14,000円（税込）</td><td><a rel="nofollow noopener" target="_blank" class="buy_now" style="word-wrap: break-word;" href="https://hb.afl.rakuten.co.jp/hgc/1744d1ab.871080de.1744d1ac.4bb08589/?pc=https%3A%2F%2Fitem.rakuten.co.jp%2Fbook%2F15596606%2F&amp;m=http%3A%2F%2Fm.rakuten.co.jp%2Fbook%2Fi%2F19282020%2F&amp;link_type=text&amp;ut=eyJwYWdlIjoiaXRlbSIsInR5cGUiOiJ0ZXh0Iiwic2l6ZSI6IjI0MHgyNDAiLCJuYW0iOjEsIm5hbXAiOiJyaWdodCIsImNvbSI6MSwiY29tcCI6ImxlZnQiLCJwcmljZSI6MCwiYm9yIjoxLCJjb2wiOjAsImJidG4iOjF9">Buy Now</a></td></tr><tr><td>Invoke</td><td>Microsoft</td><td>Cortana</td><td class="has-text-align-center" data-align="center"><img decoding="async" width="100" height="100" class="aligncenter size-thumbnail wp-image-814" src="https://ct-innovation01.xyz/DL-Freetime/wp/wp-content/uploads/2018/10/yu_invoke1-150x150.jpg" alt=""></td><td>直径：106.68 mm<br>高さ：241.30 mm</td><td>199ドル</td><td>日本未発売</td></tr><tr><td>HomePod</td><td>Apple</td><td>Siri</td><td class="has-text-align-center" data-align="center"><a rel="noopener" target="_blank" href="https://www.apple.com/homepod/"><img decoding="async" class="aligncenter size-thumbnail wp-image-813" src="https://ct-innovation01.xyz/DL-Freetime/wp/wp-content/uploads/2018/10/homepod_standing_black_inline.large_-150x150.jpg" alt="" width="100" height="100"></a></td><td>直径: 172 mm<br>高さ: 142 mm</td><td>349ドル</td><td><a rel="nofollow noopener" target="_blank" href="https://www.apple.com/homepod/">Buy Now</a></td></tr></tbody></table></div></figure>



<h3 class="wp-block-heading">補足）その他のスマートスピーカー</h3>



<p class="wp-block-paragraph">上記にはないが、スマートスピーカーだと打ち出して販売されている製品がいくつか見受けられると思います。<br>これらを表に載せなかったのは、他社のAIアシスタントを搭載しているからです。例えばSonyのスマートスピーカーであればGoogleAssistantを搭載しているといった具合です。今回の記事ではAIアシスタントが独自のものだけをリストアップしました。</p>



<h2 class="wp-block-heading">おさらい：GoogleHomeとは</h2>



<p class="wp-block-paragraph">Google Homeは、2016年に北米で発売されたGoogle製のスマートスピーカーです。Google Assistantを搭載しており、さまざまな操作を音声で行えます。音楽再生や天気予報の確認、交通状況の確認などが可能です。また、スマート家電との連携も可能であり、家庭内の操作をより便利にします。</p>



<h2 class="wp-block-heading">前回の続きはここから</h2>



<h2 class="wp-block-heading">GitHubからHerokuへのデプロイ</h2>



<div class="wp-block-cocoon-blocks-tab-box-1 blank-box bb-tab bb-point block-box">
<ol class="wp-block-list">
<li>自作PythonがCoincheckのAPIを叩いてレートをjson形式で取得する</li>



<li>サーバからDialogFlowにGoogleAssistantで読み込めるjson形式で返却する</li>
</ol>
</div>



<p class="wp-block-paragraph">なぜこれが必要なのかは、次のWebhook以降で分かります。ともかくここでは、前回の記事で作成したCoincheckのAPIを叩いてレートを取得し、json形式に整えて返却するPythonをWeb上で特定のリクエストを投げることで動くWebAPIとして登録する必要があるという事です。その為のサービスとしてある程度無料で使えるHerokuを利用しました。</p>



<p class="wp-block-paragraph"><iframe class="embed-card embed-webcard" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" title="dialogflow/fulfillment-webhook-weather-python" src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fgithub.com%2Fdialogflow%2Ffulfillment-webhook-weather-python" frameborder="0" scrolling="no"></iframe><cite class="hatena-citation"><a rel="noopener" target="_blank" href="https://github.com/dialogflow/fulfillment-webhook-weather-python">github.com</a></cite></p>



<p class="wp-block-paragraph">やり方は参考にしているリポジトリをインスパイアしてGitHubへのアップロード時にreadme.mdを真似してください。そうするとDeployボタンが表示されるので、これを押すだけでDeployできます。</p>



<figure class="wp-block-image"><img decoding="async" src="http://ct-innovation01.xyz/DL-Freetime/wp/wp-content/uploads/2018/06/20180213195140.png" alt="" class="wp-image-77"/></figure>



<p class="wp-block-paragraph">あとは、デプロイ時の名前を好きな名前にすると勝手にデプロイが始まるのでほっときます。</p>



<h2 class="wp-block-heading">Webhook</h2>



<div class="wp-block-cocoon-blocks-tab-box-1 blank-box bb-tab bb-point block-box">
<ol class="wp-block-list">
<li>DialogFlowとサーバ（heroku）をWebhookを使って接続する</li>
</ol>
</div>



<h3 class="wp-block-heading">Webhookとは？</h3>



<figure class="wp-block-image aligncenter"><img decoding="async" width="780" height="585" src="https://ct-innovation01.xyz/DL-Freetime/wp/wp-content/uploads/2018/06/20180202132833.jpg" alt="" class="wp-image-156" srcset="https://www.ct-innovation.blog/dl-freetime/wp-content/uploads/2018/06/20180202132833.jpg 780w, https://www.ct-innovation.blog/dl-freetime/wp-content/uploads/2018/06/20180202132833-300x225.jpg 300w, https://www.ct-innovation.blog/dl-freetime/wp-content/uploads/2018/06/20180202132833-768x576.jpg 768w" sizes="(max-width: 780px) 100vw, 780px" /></figure>



<p class="wp-block-paragraph">Webhookはあるアプリケーションから別のアプリケーションに対してリアルタイムな情報提供を実現するための仕組みです。ものすごくわかりやすいサイトがあったのでこちらを見た方が理解できるかもしれません。→<a rel="noopener" target="_blank" href="https://kintone-blog.cybozu.co.jp/developer/000283.html">Webhookって何？を子どもでもわかるように描いてみた</a><br><br>普通にスマートスピーカーでAと聞いたらBと返すという様な固定の返答をしたい場合は右側（オレンジ枠）を介する必要がありません。DialogFlowだけで完結できます。そうではなく、今回のようにリアルタイムな情報を別のサービスから問い合わせたいという希望が出た時に、このWebhookが必要となります。</p>



<h3 class="wp-block-heading">WebhookでDialogFlowとHerokuをつなぐ</h3>



<p class="wp-block-paragraph">DialogFlowのFulfillmentタブからWebhookをEnableにしてデプロイしたherokuのドメインをコピーしてURLの欄に貼り付けます。</p>



<figure class="wp-block-image"><img decoding="async" src="http://ct-innovation01.xyz/DL-Freetime/wp/wp-content/uploads/2018/06/3c34fe5b-7d8a-4b47-a6fa-0a611afcb653.png" alt="" class="wp-image-183"/></figure>



<p class="wp-block-paragraph">としてSAVEする。さらに、各IntentsにFulfillmentが増えてるのでこのIntentでは使う場合チェックをしてSAVEをし直す。</p>



<figure class="wp-block-image"><img decoding="async" src="http://ct-innovation01.xyz/DL-Freetime/wp/wp-content/uploads/2018/06/20180213200132.png" alt="" class="wp-image-78"/></figure>



<h2 class="wp-block-heading">実際に動かすためにGoogleAssistantと連動</h2>



<p class="wp-block-paragraph">あとは実際に動作チェックを行います。Integrationsの中にあるGoogleAssistantを選択して色々やって、実際に動かしたのがこちらになります。（私の声が汚いのはお許し下さい）</p>



<p class="wp-block-paragraph"><iframe loading="lazy" style="border: none; overflow: hidden;" src="https://www.facebook.com/plugins/video.php?href=https%3A%2F%2Fwww.facebook.com%2Fyuki.shiroyama.3%2Fvideos%2F1355891407849096%2F&amp;show_text=0&amp;width=267" width="267" height="476" frameborder="0" scrolling="no" allowfullscreen="allowfullscreen"></iframe></p>



<h2 class="wp-block-heading">まとめ</h2>



<p class="wp-block-paragraph">実際に動かすまでの道のりは、情報がないと何をやったらいいかわからなくて時間がかかりましたが整理されるとすごく簡単でした。備忘録として書いておきます。誰かの参考になれば・・・</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.ct-innovation.blog/dl-freetime/gadget/179/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
