金 岡 プ ロ ジ ェ ク ト
3 班
5 5 1 6 0 0 7
新 垣 李 奈5 5 1 6 0 1 7
氏 家 か す み5 5 1 6 0 2 2
大 下 佑 衣5 5 1 7 0 8 2
平 井 孝 志5 5 1 7 0 9 7
山 口 千 尋目的
・一人暮らしの学生が自立できるようにサポートするお母さん
bot
を作成実装する機能
・時間を取得して平日毎朝7時起こしてくれる
・「おはよう」と入力
→天気予報を取得し教えてくれる
・スケジュール帳のデータを取得し毎朝7時台に教えてくれる
・話しかけるとランダムで小言
(
アドバイス)
をする・特定のメッセージに特定の返しをする
機能実現のための技術要素
・
Python
で作成・
cron
の設定・お母さんからのアドバイス・小言リスト作成
・
完成図①
完成図②
ソースコードの説明
*平日毎朝7時起こしてくれる機能
(crontest.py)
準備:
SlackAPI
の中の”IncomingWebHook”
でメッセージを送信するチャンネルのURL
を取得・送信したいメッセージを指定
payload = {'text':'
朝よ!起きなさい!’}
・取得した
URL
でポスト先を指定requests.post(‘https://hooks.slack.com/services/TB50SNV3R/BBL164A2H/fbf1SnGj9UPfa
RXjuA3fh2tO’,data=json.dumps(payload))
ソースコードの説明
*平日毎朝7時起こしてくれる機能
(cron
の設定)
分 時 日 月 曜日
python
実行したいデータの場所⇒今回は月曜~金曜の朝 7
時にデータを実行ソースコードの説明
*「おはよう」⇒天気予報
(mention.py)
・“おはよう“というメッセージに対して反応する
@respond_to('(.*
おはよう.*)'.decode('utf-8’))
def confirm_today_weather(message, something):
weather_class = ConfirmWeather()
weather_class.return_today_weather(message)
※ここでは反応する機能のみ記述
ソースコードの説明
*「おはよう」⇒天気予報
(confirm_weather.py)
・天気を取得するコードが書かれている場所のパスを取得
script_dir = os.path.abspath(os.path.dirname(__file__))
cmd = os.path.join(script_dir,"confirm_today_weather.sh")
・同じディレクトリに置いたシェルスクリプトの実行結果を
commands
モジュールのgetoutput
メソッドを使って変数weather_info
に格納weather_info = commands.getoutput(cmd)
・
slack
へPOST
するmessage.send("
おはよう!今日の天気予報を送るわね") message.send(weather_info)
*
confirm_today_weather.sh ⇒引用したコマンドで天気を取得
ソースコードの説明
*予定を毎朝通知
・
getCalendarById
メソッドでマイカレンダーを取得・
getEventsForDay
メソッドで指定した日時の予定項目を変数events
に格納・ユーティリティメソッドを使って日付や時刻を文字列に変換
s += Utilities.formatDate(events[i].getStartTime(),"GMT+0900","MM/dd ");
・ここでも
”IncomingWebHook”
で取得したURL
で送信先のチャンネルを指定してPOST
・プロジェクトのトリガー設定で通知時刻を設定
ソースコードの説明
*お母さんからのアドバイス・小言
(randomcom.py ,comments.txt)
①「お母さん」と話しかけるとランダムに返答
⇒授業用スライドのランダムな返答の例をそのまま使用
返答パターンは30
パターンソースコードの説明
*お母さんからのアドバイス・小言
(kogoto1.py
など)
②特定のメッセージに対して特定の返答
@respond_to('ねむい'.decode('utf-8')) def cheer(message):
message.reply(‘ちゃんと寝ないとだめよ’)
また、画像付きのメッセージも作成
・画像のタイトルとURLを指定
@respond_to('猫は元気?'.decode('utf-8')) def upload_slack_image(message):
message.reply_webapi('元気よー', attachments=[{
"fields": [ { "title": "happy!" } ],
"image_url": "https://pbs.twimg.com/media/Dh-SHa6UYAEh-ej.jpg:large"}])
⇒画像なし32パターン、画像あり5パターン作成
作業項目割り当て
6月29日 7月6日 7月13日
新垣 ソースプログラム作成 ソースプログラム作成
情報リストの作成 動作確認・修正作業 氏家 ソースプログラム作成 ソースプログラム作成
情報リストの作成 動作確認・修正作業 大下 ソースプログラム作成 ソースプログラム作成
情報リストの作成 統合作業 発表用
PP
作成 平井 小言リスト作成(
写真収集)
ソースプログラム作成 動作確認・修正作業 山口 小言リスト作成(
写真収集)
ソースプログラム作成 動作確認・修正作業工夫した点
・お母さんからの小言を
①「お母さん」と話しかけたらランダムな返答が来るもの
②お母さんに話しかけたら特定の返答がくるもの の2パターン作成した。
・お母さんからの小言に画像を添付した。
反省点
・
Bot
側からランダムに話しかけてくる機能を実装することがで きなかった。・天気予報を見てアドバイスをする機能を実装することができな かった。
・調べながら既存のプログラムを理解し利用するのが難しく思っ たよりスムーズに進まない部分も多くあったが、とても勉強に なった。
デモプレイ