什麼? 祕書也快被取代? 打造你自己的專屬行動祕書(附實現程式碼)

行銷資料科學
PythonStock
Published in
17 min readApr 20, 2018

進入到手機時代後,業者紛紛推出APP來與掌上時代接軌,但發現效果不彰,其原因在於消費者並不想為了一項功能,還要特別去安裝一個APP,畢竟手機容量有限,若不是必要性或者APP具有多功能,消費者大概都會選擇使用網路版,或者下載完後達到目的就刪除。

「通訊軟體」是在每個人的手機中都有的,他已經解決了「不想特別安裝」這個問題,它的功能更是強大,能夠打造成你的專屬行動祕書如果自己請一個祕書,一個月就是動輒上萬塊… 就算是專業級的秘書,以人工的方式蒐集資訊,仍無法在茫茫網路海中,滴水不漏的掌握公司要聞

所以本次,我們將介紹,如何製作屬於自己的秘書。

準備好打造出你的「創世紀」專屬行動祕書了嗎?

1. 基本功能創建

1.1 創立Heroku帳號。Heroku是支援多種程式語言的雲端平台服務,接下來的範例,需要將程式碼部屬到上面。

(上圖顯示之商標權屬Heroku公司所有,會顯示該商標純屬連結貼入產生之結果,如有侵犯您權益,可以聯絡我們,立即移除。)

1.2 創立一個新的APP專案,只能用英文創立,範例我取名為williantest,後面操作會用到這個專案名稱。

1.3 接下來到Line developer創建屬於自己的Linebot機器人專案,先登入自己的Line帳號後就可以進入了。點選Add new provider創建一個新的機器人專案,這裡創建的名稱是willianbot。

1.4 接下來點選Messaging API

1.5 輸入Linebot相關資訊

Icon:APP的圖片

App name:機器人的名稱,也就是顯示在手機好友上的名稱

App description:APP的介紹

1.6 完成後在下方就可以看到剛剛創建的機器人了,點選進去進行設定。

1.7 取得 channel secret 和 channel access token,如果裡面是空的,請點選Issue,這兩個是Linebot連接必要的Key,一般來說channel access token的部份一開始都會是空的。

1.8 Use Webhook 的部分要把它改成Enabled,來啟用Webhook功能。Auto-reply messages的部分建議把改成Disabled,這個功能是自動回復,如果要用程式碼開發的話這個功能會影響到體驗,但若有需要可以開啟。

Webhook URL 的部分要打上:

‘Heroku專案名稱’.herokuapp.com/callback

範例:love.herokuapp.com/callback

1.9 QR code很直覺的就是加好友使用的,直接打開手機Line掃一掃,就可以把自己的秘書加進好友了;另外Your user ID等於是你的秘書發給你的身分證,在下一個步驟1.10會使用到。

1.10 接下來要開始程式的部分,以是下範例的基本程式碼的連結供下載,其中要把 YOUR_CHANNEL_ACCESS_TOKEN與 YOUR_CHANNEL_SECRET,改成步驟7中的Key,這樣才能與機器人連接,YOUR_USER_ID則是填入步驟1.9中的Your user ID,這樣每當程式一部屬好的時候就會通知你;這個測試程式碼主要的功能就是重複你講的話,基本上到這裡程式的部分已經完成了。

2. 程式部屬雲端

2.1 接下來就是把剛才的程式碼部屬到Heroku;首先需要下載Heroku CLI還有Git,許多雲端都會需要用到,是個很實用的工具。

(上圖顯示之商標權屬Heroku公司所有,會顯示該商標純屬連結貼入產生之結果)

2.2 接者使用終端機操作;記得要先把所在位置切換到步驟1.8的檔案位置,切換的指令是cd,如我切換到檔案位置的指令就是

cd home/cheating/Downloads/linebot

2.3 登入Heroku,輸入的Email跟密碼就是在步驟1.1中創建的帳號密碼,也就是登入網頁版的帳號密碼,如果成功了他就會顯示「Logged in as ‘你的Email’」。

heroku login

2.4 將資料夾設定成git 空間,會顯示你指定的路徑

git init

2.5 設定git資料。

git config --global user.name "你的名字"git config --global user.email 你的信箱

2.6 接下來將git連接到Heroku的專案,專案名稱就是步驟1.2的名稱,輸入後成功就會看到指名你的專案。

heroku git:remote -a '你的專案名稱'

2.7 加入所有檔案,點的意思就是全部。

git add .

2.8 儲存有修改過的紀錄點,會顯示說你有幾個檔案有修改過了。

git commit -m "Init"

2.9 接下來就是把檔案Push上Heroku了,會看到檔案開始傳輸,通常第一次會比較久,如果成功就會顯示Verifying deploy… done,就是成功上傳了,上傳成功後你的秘書就可以運作了。

git push heroku master

如果出現問題就加一個「-f」,如下程式碼。

git push -f heroku master

2.10 如果有錯誤要Debug的話可以開啟Linebot的日誌。

heroku logs --tail --app '你的專案名稱'

3.傳送訊息

官方文件

以下是在handle_message監聽方法中,所使用的傳送訊息物件,做出以下幾種整理。

TextSendMessage (文字訊息)

message = TextSendMessage(text='Hello, world')
line_bot_api.reply_message(event.reply_token, message)

ImageSendMessage(圖片訊息)

message = ImageSendMessage(
original_content_url='https://example.com/original.jpg',
preview_image_url='https://example.com/preview.jpg'
)
line_bot_api.reply_message(event.reply_token, message)

AudioSendMessage(音訊訊息)

message = AudioSendMessage(
original_content_url='https://example.com/original.m4a',
duration=240000
)
line_bot_api.reply_message(event.reply_token, message)

VideoSendMessage(影片訊息)

message = VideoSendMessage(
original_content_url='https://example.com/original.mp4',
preview_image_url='https://example.com/preview.jpg'
)
line_bot_api.reply_message(event.reply_token, message)

LocationSendMessage(位置訊息)

message = LocationSendMessage(
title='my location',
address='Tokyo',
latitude=35.65910807942215,
longitude=139.70372892916203
)
line_bot_api.reply_message(event.reply_token, message)

StickerSendMessage(貼圖訊息)

message = StickerSendMessage(
package_id='1',
sticker_id='1'
)
line_bot_api.reply_message(event.reply_token, message)

ImagemapSendMessage

message = ImagemapSendMessage(
base_url='https://example.com/base',
alt_text='this is an imagemap',
base_size=BaseSize(height=1040, width=1040),
actions=[
URIImagemapAction(
link_uri='https://example.com/',
area=ImagemapArea(
x=0, y=0, width=520, height=1040
)
),
MessageImagemapAction(
text='hello',
area=ImagemapArea(
x=520, y=0, width=520, height=1040
)
)
]
)
line_bot_api.reply_message(event.reply_token, message)

TemplateSendMessage — ButtonsTemplate (按鈕介面訊息)

message = TemplateSendMessage(
alt_text='Buttons template',
template=ButtonsTemplate(
thumbnail_image_url='https://example.com/image.jpg',
title='Menu',
text='Please select',
actions=[
PostbackTemplateAction(
label='postback',
text='postback text',
data='action=buy&itemid=1'
),
MessageTemplateAction(
label='message',
text='message text'
),
URITemplateAction(
label='uri',
uri='http://example.com/'
)
]
)
)
line_bot_api.reply_message(event.reply_token, message)

TemplateSendMessage — ConfirmTemplate(確認介面訊息)

message = TemplateSendMessage(
alt_text='Confirm template',
template=ConfirmTemplate(
text='Are you sure?',
actions=[
PostbackTemplateAction(
label='postback',
text='postback text',
data='action=buy&itemid=1'
),
MessageTemplateAction(
label='message',
text='message text'
)
]
)
)
line_bot_api.reply_message(event.reply_token, message)

TemplateSendMessage — CarouselTemplate

message = TemplateSendMessage(
alt_text='Carousel template',
template=CarouselTemplate(
columns=[
CarouselColumn(
thumbnail_image_url='https://example.com/item1.jpg',
title='this is menu1',
text='description1',
actions=[
PostbackTemplateAction(
label='postback1',
text='postback text1',
data='action=buy&itemid=1'
),
MessageTemplateAction(
label='message1',
text='message text1'
),
URITemplateAction(
label='uri1',
uri='http://example.com/1'
)
]
),
CarouselColumn(
thumbnail_image_url='https://example.com/item2.jpg',
title='this is menu2',
text='description2',
actions=[
PostbackTemplateAction(
label='postback2',
text='postback text2',
data='action=buy&itemid=2'
),
MessageTemplateAction(
label='message2',
text='message text2'
),
URITemplateAction(
label='uri2',
uri='http://example.com/2'
)
]
)
]
)
)
line_bot_api.reply_message(event.reply_token, message)

TemplateSendMessage — ImageCarouselTemplate

message = TemplateSendMessage(
alt_text='ImageCarousel template',
template=ImageCarouselTemplate(
columns=[
ImageCarouselColumn(
image_url='https://example.com/item1.jpg',
action=PostbackTemplateAction(
label='postback1',
text='postback text1',
data='action=buy&itemid=1'
)
),
ImageCarouselColumn(
image_url='https://example.com/item2.jpg',
action=PostbackTemplateAction(
label='postback2',
text='postback text2',
data='action=buy&itemid=2'
)
)
]
)
)
line_bot_api.reply_message(event.reply_token, message)

基本的程式碼功能是回復你所說的話,其功能在handle_message這個方法裡面,在這方面修改,可以結合各種技術、Know how,來讓這個個人秘書更完善,我們就來看看實例吧。

3.1 結合爬蟲,自動幫你爬下來網路上的資訊,例如股票、社群資訊,新聞資訊都可以,還能依照自己的喜愛,去幫你自動篩選資訊。

3.2 結合情緒分析,能將爬下來的文章做情緒的判別。

3.3 結合文字探勘,找出文字的關鍵字

這個秘書可以取代上網找資料的工作,那怕每天只有幫你節省10分鐘,如果人來做要1小時,一年就差21,900分鐘,累積下來也是很可觀的,如果以時薪130來看,一年可以省下47,450元,省下來的時間與金錢可以去做更多生產力的事情。

如果你是一個企業家,更能將它結合公司的資料庫,整合前幾篇所提到的RFM Model(若有興趣請備註),自動化且即時為公司回傳報表。或者產業性質允許動態定價的話,也可以參考下方文章,讓隨時的供給跟需求掌握在你的手中。

敬請期待!輿情預警

會了專屬行動秘書的製作,再接下來的文章中,我們將逐步講解專屬行動秘書在網路輿情預警上的應用!

往後的文章都會持續在行銷資料科學粉絲專頁上發表喔!

再請大家多多follow我們的粉絲專頁:行銷資料科學

Enjoy Marketing Data Science!

作者:
楊超霆(臺灣行銷研究有限公司 資料科學研發工程師)
林建興(臺灣行銷研究有限公司 技術長)

備註:

RFM模型文章
即時動態定價第一篇文章

--

--

行銷資料科學
PythonStock

Marketing data science. 台灣第一個行銷資料科學(MDS)知識部落,本粉絲專頁在探討行銷資料科學之基礎概念、趨勢、新工具和實作,讓粉絲們瞭解資料科學的行銷運用,並開啟厚植數據分析能力之契機。粉絲專頁:https://www.facebook.com/MarketingDataScienceTMR