開發LINE聊天機器人不可不知的十件事

LINE於2016年9月推出Messaging API之後,越來越多開發者投入心力設計各式各樣功能的LINE聊天機器人。然而,撰寫一個LINE聊天機器人除了要有好的應用情境之外,資訊技術上還必須注意一些重要的細節,以免設計出來的聊天機器人上線後無法正常運作。本文分享了作者自身與協助客戶或合作夥伴開發各種LINE聊天機器人所觀察到常見的問題與建議的處理方式,提供給LINE聊天機器人開發者作為參考。

第一件事:正確設定HTTPS

基於資料通訊安全的因素,在LINE平台上開發應用服務的所有資料傳送都必須透過加密通道。因此,當開發者架設LINE Messaging APIWebhook伺服器時,一定要使用HTTPS通訊協定。

在設定HTTPS伺服器時,有下列幾點必須注意的事項:

  1. HTTPS伺服器所使用的根憑證Root CA)必須是在LINE平台的白名單列表中,否則LINE平台會拒絕傳送訊息。在白名單列表中大多數的憑證都需要付費申請,但是LINE平台也支援常用的免費憑證,例如Let’s Encrypt
  2. 請勿使用已知具有安全性漏洞的協定(例如SSL v2或SSL v3)或Cipher Suite(例如SWEET32或CVE-2016-2183)。
  3. 請務必正確設定中繼憑證Intermediate certificate),以避免無法對應到根憑證而發生錯誤。這是最常見的問題通報狀況,請在設定HTTPS伺服器時多加留意。

如果HTTPS伺服器沒有正確設定成功,Webhook程式將無法收到LINE平台的任何事件訊息,並且管理者們會收到來自LINE平台的警示電子郵件,內容的錯誤原因會顯示「UNCLASSIFIED」。建議開發者在設定完成HTTPS伺服器之後,立即使用一些免費工具進行檢查,以確保HTTPS伺服器的可用性。這些免費工具舉例如下:

為什麼我們使用Kotlin開發LINE Creators Studio

前言

哈囉大家好,我是 Freddie Wang, LINE Fukuoka 開發室的軟體工程師。目前擔任 LINE Creators Studio Android 版本的開發。我們最近剛剛完成了 LINE Creators Studio 的 Android 版本。LINE Creators Sudio是 LINE 最新推出的應用程式,可以讓用戶輕鬆的製作自己的貼圖並且上架販賣。在 Android 的版本上我們使用 Kotlin 來開發這個應用程式。所以我想透過此篇文章來分享一下為什麼我們使用 Kotlin 開發以及我們使用了哪些功能。

目前 LINE Creators Studio 只在日本上架,預計之後會在其他地區推出。

Kotlin的優點與主要功能

在今年的 Google IO 17上, Google 正式宣佈將從 Android Studio 3.0 開始提供 Kotlin 的支援,這對 Android 的開發者來說是一個令人非常振奮的消息。在 2016 年底,我們開始了 LINE Creators Studio 的開發工作,並且需要在短時間完成一個 MVP (Minimum Viable Product)。在那個時間點,雖然 Kotlin 1.0 已經正式推出了,但我們小組裡面還沒有人有用過 Kotlin 開發產品的經驗,所以我們在正式開發前花了一點時間來研究 Kotlin,經過內部討論後,最後決定試著用 Kotlin 來開發 LINE Creators Studio。

為什麼用Kotlin

我們是根據以下幾個原因決定使用 Kotlin.

100% interoperable with Java

Kotlin 其中一個非常讚的特性是完全相容 Java,所以你可以在一個 project 裡面同時使用 Kotlin 和 Java 而不會有任何相容性的問題。雖然 LINE Creators Studio 是一個全新的專案,但是我們仍然需要使用一些很棒的函式庫,像 Dagger 2、Retrofit、RxJava 等等。

Concise syntax

Kotlin 最初是為了解決一些 Java 設計不便的地方而設計的,而其中一個主要的目的就是要能比 Java 寫出更簡潔的程式碼,而這一點在我們小組裡面,更是重要的一個因素。

Reduced dependencies

Kotlin 本身就帶了一個簡潔的標準函式庫,而且在大多數的應用上可以用來取代一些知名的大型 Java 函式庫,像是 Guava 等。在 Server 和 Desktop 應用領域上,使用這類大型的函式庫基本上沒有什麼問題。但是在 Android 的開發上就會造成一些麻煩。主要的原因就是 Android 的 Dalvik JVM 有上限 65K 的問題,基本上需要避免使用大型的 Java 函式庫。而最新的 Kotlin 標準函式庫 1.1.3-2 版只有6306個(參考連結) 函式, 所以可以有效地減輕這個問題。

Compatible with old Android devices

Kotlin 1.0 是基於 Java 6,所以使用 Kotlin 開發基本上可以在任何的 Android 2.3 版以上的裝置運行,這對於一個 Android 應用程式開發者來說是非常重要的,畢竟使用最新版本 Android 的用戶還是比較少一點。

Geo-linked applications with beacon

我是負責規劃台灣LINE Beacon平台的Charlotte Yu。

在我負責的計畫裡,LINE Beacon作為實際定位精確地理位置的技術,對於LINE「拉近你我的距離」(Closing the Distance)願景,以及對 LINE 成為一個智慧平台入口的理念,扮演了相當重要的角色。

在前期階段,我們主要致力於在選定的重點場域部署LINE Beacon與應用案例來提升使用者對此新型態LBS(Location-based Service)應用的關注進而吸引更多使用者使用。

我們的策略是利用LINE Beacon結合目前LINE平台各項受歡迎的產品或功能來與台灣廣大的LINE用戶連結。我們不僅希望未來能引領行動定位服務(LBS, Location Based Service)新型態的創新應用,也希望能盡可能地擴大LINE Beacon的部署以建構LINE Beacon的聯播網。LINE在台灣的高滲透率以及Beacon精準定位的優勢,也符合實體通路虛實整合(O2O, Online to Offline) 行動商務佈局最重要的兩個因素。

虛實整合的訊息服務能把用戶從線上平台引導到線下商店。O2O 消費行為模式已成智慧商務的新興議題,透過LINE Beacon推播訊息至消費者的行動裝置(也就是一般用戶花最多時間瀏覽的線上商店或平台),藉此引導消費者到店內消費。依照顧客位置提供附近店家和相關的折價優惠券、會員卡,或作為鄰近行銷(Proximity Marketing)的參考。所以我們希望透過各項LINE Beacon的應用將人群從公共場域延伸至私人商家場域,這些應用提供了消費者在商場內的導航或優惠資訊推播,傳送實用的訊息至用戶的手機中,連結實體店面和網路虛擬世界來擴大傳統實體商圈客群的觸及,抓住消費者的心。

LINE Beacon連結起的虛實整合訊息服務,將開始應用在我們每天使用的產品或服務,例如:優惠券、點數或會員卡來提升顧客消費的比例。我們可以推播GeoADs(地理定位的廣告)來行銷擁有LINE企業帳號(如:LINE 官方帳號或LINE @帳號)的商家、客戶或實體活動給鄰近的LINE用戶。藉由結合LBS(Location-based Service)的誘因,如:優惠券或貼圖,來吸引LINE用戶走進店裡,透過有趣與互動式的商場導覽應用能夠提供較好的使用者體驗以及延長消費者在實體店面的時間。

LINE安全介紹

大家好,我是David,是LINE台灣的資安工程師,今天要跟各位分享的主題是「LINE安全介紹」,說明LINE如何確保用戶的安全。

當各位在使用LINE的時候或許會發現LINE的軟體更新相當頻繁,在這些變更中,許多更新是為了強化登入與訊息的安全,或許您會覺得這些更新帶來一些不便,但是這些新的功能可以更有效的保護您的帳號與個人資訊的安全。

LINE軟體安全功能介紹

為了讓訊息傳遞與帳號資訊更加的安全,LINE在軟體中提供了許多安全功能,像是訊息加密、安全登入、帳號管理與資料安全移除等功能,接下來的介紹會讓您更了解這些安全功能的作用。

訊息加密

在安全領域裡面,從古至今,加密對於保護訊息傳遞是一個最有效而直接的方法,為了保護用戶私密的資訊,LINE使用了多種演算法與加密系統來傳遞訊息。

LEGY (LINE event delivery gateway)

LEGY伺服器處理所有經過LINE的訊息,負責將不同類型訊息傳送至後端的伺服器,當用戶的設備中的LINE App連線到LINE的服務時,重要的資料傳輸都會透過LEGY伺服器來處理,因此,為了確保傳輸的效率與安全,LEGY協定根據通訊軟體的特性修改了部分SPDY的功能來降低網路傳輸的延遲,透過LEGY協定,LINE可以將訊息都放置於加密的TCP通道中傳輸而不會因為加密而犧牲太多的通訊品質。

為了在LEGY協定中實現上述的安全功能,我們將加密簽章預先放進了軟體中,除了加速了原先需要做簽章溝通與下載的流程也避免掉駭客利用偽造簽章來破解加密通道,即便如此,伺服器仍然會檢查連線的用戶端的加密簽章,確保連線的另一方使用的簽章是被LINE所信任的。

LINE聊天機器人活動分享

我是LINE的工程師Ange。這篇文章將分享LINE內部規劃與建置LINE聊天機器人的經驗。

我們分別在2016年12月16日與2017年1月26日推出了「LINE FRIENDS CAFE & STORE新光三越A11開幕活動」以及「LINE祝福好聲音」這兩個LINE聊天機器人,在「LINE FRIENDS」與「LINE台灣」官方帳號(Official Account;簡稱OA)中舉辦活動。這些活動透過在LINE Banner、LINE官方帳號、〈其他〉頁面、LINE Points任務牆等廣告版位同步做推廣,並且達到百萬人次分享與宣傳的效果。以下將介紹這兩個LINE聊天機器人的基本功能、系統設計與建置、資安考量以及帶來的效益。

活動內容概要

LINE FRIENDS CAFE & STORE新光三越A11開幕活動

LINE FRIENDS CAFE & STORE新光三越A11 聊天機器人是LINE在2016年12月16日推出的機器人,目的在宣傳同年12月23日於新光三越A11館開幕的全台第一家複合式LINE FRIENDS CAFE & STORE,進而吸引更多用戶加入官方帳號,以及到實體店面參觀與消費。此活動整合線上(online)與線下(offline),用戶透過與官方帳號裡的圖文訊息選單與LINE聊天機器人互動,藉以了解即將開幕的LINE FRIENDS CAFE & STORE的地點與相關訊息,同時也有機會獲得LINE FRIENDS CAFE折價卷抽獎的機會。LINE用戶可以透過LINE或Facebook分享活動網頁,每五位朋友點擊用戶分享的網頁,就可以獲得一次抽獎機會, LINE聊天機器人將會把抽獎訊息自動推送給用戶。

新光三越A11館LINE FRIENDS CAFE & STORE

LINE GAME CDN 服務效能

大家好!我是LINE GAME台灣技術組的Rex。在LINE GAME台灣技術組,最主要的工作是各項LINE GAME相關技術推廣,我們需要瞭解或甚至開發LINE GAME軟體開發套件(Software Development Kit;簡稱SDK),也需要幫忙與外部開發者溝通,包括向開發者介紹如何使用SDK來整合LINE GAME平台,或協助架設與管理遊戲伺服器。這次我想從技術層面介紹我們LINE GAME使用的Content Delivery Network(簡稱CDN)。

我們LINE GAME使用Akamai的CDN服務。LINE GAME台灣技術組在台灣除了幫開發者規劃與執行CDN patch流程之外,另外需要測試各區域的Akamai服務與其最適合的設定方式,並提供開發者在使用CDN時的各項方針與注意事項。

LINE Engineering 與 Engineers’ Blog 的未來走向

嗨!我是負責LINE Engineer Blog的櫛井優介。

在此,我想聊聊「LINE Engineering」網站的發佈,以及它對LINE Engineers’ Blog的未來所代表的意義。

未來,我們計畫為LINE Engineering網站不斷更新內容,我們將在此分享LINE開發文化到開源專案、人才招募、以及直接來自LINE開發者網站的技術文件等包羅萬象的內容。這個網站目前有英文、日文與韓文的版本,繁體中文版即將推出。

LINE資安漏洞回報獎金計畫的成果

關於LINE資安漏洞回報獎金計畫

哈囉!我的名字是李明宰,負責LINE app資訊安全的相關工作。

本文中,我將會說明LINE資安漏洞回報獎金計畫並且分享2016年的執行成果。LINE資安漏洞回報獎金計畫是一個正在進行中的活動:為了讓用戶能更安全更安心地使用LINE app,我們邀請外界的工程師來找出並回報資訊安全漏洞,我們也會在確認後立即修復這些問題。

一開始我們在2015年8月24日至9月23日期間嘗試了一個稱為LINE Bug Bounty Program的計劃。基於此次試行過程中所獲得的經驗,在2016年我們做了一些改變進而開始這個改良版的漏洞回報獎勵計畫。我們在2016年6月2日推出了這個全新改良的LINE資安漏洞回報獎金計畫(LINE Security Bug Bounty Program)。

有關LINE Bug Bounty Program的更多資訊,請參閱我們先前的部落格文章:「Introducing the LINE Bug Bounty Program」與「Results From the LINE Bug Bounty」。

LINE資安漏洞回報獎金計畫官方網站: https://bugbounty.linecorp.com/

使用LINE Notify傳送貼圖與上傳圖像

嗨!我的名字是長谷部良輔,負責LINE Notify的開發工作。

在前面的文章中,我們介紹了如何藉由命令列模式使用LINE Notify發送訊息給LINE。今天我將要介紹LINE Notify API上的二個新功能:傳送貼圖與上傳圖像。

傳送貼圖

在上一篇文章中所展示的範例是使用LINE Notify將Jenkins的建置結果發送到LINE。在那個範例中,使用了傳送一張饅頭人嘲笑的圖片來展示如何通知我們建置失敗了。正是在那段時間我們有了個新想法:「為什麼不讓LINE Notify傳送貼圖與圖像呢?」

我們認為傳送貼圖將會使LINE Notify更加「LINE化」,那就是我們決定開發這個功能的原因。

從命令列傳送貼圖

我們試試看利用curl指令傳送一張貼圖。

$ curl -X POST https://notify-api.line.me/api/notify -H 'Authorization: Bearer
YOUR_PERSONAL_ACCESS_TOKEN' -F 'message=test' -F 'stickerPackageId=1' -F 'stickerId=113'

藉由命令列模式使用LINE Notify發送訊息到LINE

前言

嗨!我的名字是渡辺博文,負責LINE Notify的開發工作。在這篇文章中,我想要分享開發者如何能夠直接藉由命令列模式使用LINE Notify發送訊息到LINE。

目前要傳送系統訊息到LINE必須要有Bot API試用帳號(譯者按:目前此類型帳號已停用)或Business Connect帳號。雖然這兩者都可被Messaging API取代並提供許多重要的功能,但是它們需要比較進階的程式撰寫。

LINE Notify是一種具有特定功能的API,簡化了將訊息發送到LINE的流程。

使用cURL發送訊息

透過LINE Notify產生你自己的「personal access token」,你便能夠藉此來發送一個HTTP POST請求到API端點。在此任何可發送HTTP請求的方式皆可使用。在本文中,讓我們來看看如何使用HTTP客戶端工具cURL來完成訊息傳送。