發表文章

目前顯示的是有「LineBot」標籤的文章

LINE Bot 新功能 -- Clipboard Action

圖片
LINE Messaging API 今天 的更新增添了一項新功能:允許開發者在訊息中加入剪貼簿動作(Clipboard Action),這意味著使用者現在能夠透過單一點擊將特定文字直接複製到手機的剪貼簿中。 這個功能的加入為使用者提供了更多便利,特別是在需要複製優惠券代碼、網址連結或是其他重要訊息時,大大提高了互動效率和使用者體驗。 C# Developers 若要要使用這項新功能,可以採用全球最多 C# 開發人員使用的 LineBotSDK 套件😁。該套件是一個非常流行的 LINE Bot 開發工具,完整支援多種 LINE Messaging API 的功能。 以下提供一段 .net core 7.0 範例程式碼(使用最新版 2.12.39 LineBotSDK),展示如何建立一個包含剪貼簿動作的Button Template訊息: using isRock.LineBot; string ChannelAccessToken = "👉ChannelAccessToken"; string AdminUserId = "👉AdminUserId"; var bot = new isRock.LineBot.Bot(ChannelAccessToken); var act = new List<TemplateActionBase>(); // 建立一個剪貼簿動作,當用戶點擊時,指定的文字 "abc" 會被複製到剪貼簿 act.Add(new ClipboardAction() { label = "按這裡", clipboardText = "abc" }); // 建立Button Template訊息,設定文本、標題及動作 var TmpMsg = new ButtonsTemplate() { text = "測試複製到剪貼簿", title = "測試", actions = act }; // 使用 bot 物件推送消息給指定的用戶 bot.PushMessage(AdminUserId, TmpMsg); 透過這段程式碼,開發者可以在 LINE Bot 中建立一個按鈕,當用戶...

使用LINE Bot搭配OpenAI API建立出新一代的AI機器人

圖片
ChatGPT的出現,是對談機器人一個明顯的分水嶺。 你肯定用過許多網路銀行的對談機器人服務,或是類似的其他機器人,然而效果總是讓人覺得差強人意。原因不外乎幾點,過去的對談機器人很明顯無法明白你說的話,這是NLU(natural language understanding)能力的不足。再來,過去的對談機器人大多沒有前後文的概念,也沒有記憶,因此對談起來常常讓你覺得答非所問,牛頭不對馬嘴,整體效果並不理想。 但ChatGPT卻讓人完全沒有這樣的感覺,主要是ChatGPT對於NLU有極強的能力,ChatGPT本身又有前後文記憶,這讓整體對談效果理想非常多。 透過OpenAI API,我們也可以用LINE Bot做一個類似ChatGPT的客服機器人,這一篇,就step by step來跟您介紹,如何實現一個ChatGPT能力加持的LINE Bot。 建立LINE WebHook 建立LINE Bot的方式過去我們在Blog有介紹很多次了,我們這邊就不再贅述。 我們在建立好LINE Bot之後,可以建立一個WebHook的開發專案(使用 C#與 .net core): md folder cd folder # 建立 Web API 專案 dotnet new webapi -f net5.0 # 安裝套件 dotnet add package linebotsdk # 安裝程式碼範本 dotnet new --install isRock.Template.LineWebHook dotnet new linewebhook # 開啟VS Code ( OR vs2019/vs2022) code . 上面這段CLI指令會建立出一個 .net core 的 webapi 專案,建立好後透過 VS Code 開啟,並且修改 LineBotChatGPTWebHookController.cs 中的 Admin User ID 與 Channel Access Token: 這個動作是讓 WebHook 可以控制你的LINE Bot來 接收 與 發送 訊息。 接著看同一支程式碼中的 117 行,由於我們要呼叫 OpenAI 的 ChatCompletion API,因此我們把程式碼中的 117 行從 CallAzureOpenAIChatAPI ...

輕鬆建立具有 ChatGPT AI能力的LINE Bot

圖片
ChatGPT 也紅了好一陣子,大部分開發人員應該也知道,如果要把ChatGPT的能力整合到自己的專案當中,可以透過 Open AI 所提供的API(或是微軟提供的Azure OpenAI API)。 我們開發LINE Bot也是,想做一個具有ChatGPT能力的LINE Bot非常簡單。如果你是C#開發人員,甚至可以直接用套件和範本來完成。 你可以先用 .net 6 以上的環境建立 WebAPI專案: md testgptbot cd testgptbot dotnet new webapi 完成後,請一併執行 LineBotSDK和LineWebHook範本的安裝: dotnet add package linebotsdk dotnet new install isRock.Template.LineWebHook dotnet new linewebhook 執行後你會看到底下畫面: 這時開啟專案,會看到這些範本內容,主要是LineBotChatGPTWebHookController 這隻: 這隻是寫好的 LINE Bot 範本,同時支援 OpenAI API 和 微軟的Azure OpenAI API。如果您熟悉LINE Bot的開發,只需要把25行的Channel Access Token換掉,順便把 20 行的 Admin User ID換掉(這是處理發生例外的訊息用的),這樣主程式就完成了。Channel Access Token和Admin User ID這些資訊你可以從LINE Developers Console( https://developers.line.biz/console )找到: 為了讓這個 LINE Bot 可以支援 OpenAI API,我們把需要一個 OpenAI的API Key,這個Key可以從OpenAI的開發人員後台( API keys - OpenAI API )看到: 有了這些資訊之後,只需要把剛才LineBotChatGPTWebHookController 這隻程式碼中的 117 行調整成 return ChatGPT.CallOpenAIChatAPI(…),並填入剛才取得的key: 將其運行起來之後,你就可以跟這隻 LINE Bot互動了: 你會發現,有了 Ch...

千呼萬喚始出來:動態修改LINE Bot WebHook 的 API

圖片
很多人期待這組API很久了,終於,在光輝的十月,LINE通知大家,這組API出現了😍: https://developers.line.biz/en/news/2020/10/06/messaging-api-update-october-2020/ 過去,開發者要動態修改LINE Bot的WebHook是不可能的。😢 唯一的方式是去LINE的Developer後台 手動 修改。 但這造成了許多LINE Bot開發廠商的維運難度。 想像一下,你需要為近百個客戶同時升級改版,更新WebHook的時候,會是一個多大的工程? 😒 還不僅如此,有許多LINE Bot應用廠商,自己也做了LINE Bot的管理後台,想讓客戶輸入LINE Bot的Channel Access Token,就可以幫客戶的LINE Bot動態賦予不同的行為。但過去,這也無法達成,非得要到客戶的後台去設定不可。(但直接去客戶後台修改? 還是手動? 有點 low 了吧…) 而現在這一組API,則徹底的解決了這個問題。現在,你只要有LINE Bot的Channel Access Token,就可以動態幫LINE Bot隨時設定或調整WebHook URL。 LINE公布了這組API之後,我們的SDK當然立刻更新。 現在,你只需要透過底下這樣的指令,就可以動態設定 LINE Bot的WebHook: isRock . LineBot . Utility . SetWebhookEndpointURL ( ChannelAccessToken , WebHookUrl ) ; 想要抓取當前LINE Bot的WebHook也不是難事: var ret = isRock . LineBot . Utility . GetWebhookEndpointInformation ( ChannelAccessToken ) ; 上面取得的ret,會有底下2個屬性: active屬性可以得知當前是否有使用WebHook,而endpoint當然就是WebHook的url囉。 想要測試 WebHook是否正確也可以用 API呢,例如: ret2 = isRock . LineBot . Utility . TestWebhookEndpoint ( Chan...

使用 .net core 開發 LINE Bot(02) - 建立你的第一支LINE Bot(2020年版)

圖片
申請你的LINE Bot帳號 關於這個主題,我大概每年重寫一次,原因很簡單 – LINE的網站一直在變。 在敏捷成為主流的這個年代,網站改版已經是常態。有時候上課上到一半,突然間網站UI整個不同,也不是一件新奇的事情了。也因此,每年寫一版『申請帳號』流程,大概也是剛好而已。 來吧,如何申請你的LINE Bot帳號? 首先,請準備你的LINE帳號,我知道你有一個LINE ID,但我們用不上它,們待會需要的是你的email和密碼,也就是你用來登入desktop版本的LINE時,所用的那組email帳號和密碼,如果你真的沒有(不曾用PC/MAC登入LINE?) 那你待會用手機掃QR Code登入也行。 準備好帳密或手機之後,請進入底下網址: https://developers.line.biz/zh-hant/ 進入後,請點選下圖中的Log in,以你的帳號密碼登入: 如果出現底下畫面,請選擇 使用LINE帳號登入 接著,你可以輸入email和密碼,或是透過手機掃描QR Code登入: 第一次登入,可能會要求你建立Provider,這個Provider是你待會要建立的LINE Bot的所屬單位,一般用公司或機構名稱,如果你是自己玩玩,也可以用個人工作室名稱或你自己的代號: 建立完成之後,你可以在Provider的首頁,建立LINE Bot了。LINE Bot屬於 channel 的一種,所以你可以透過底下『Create a new channel』來建立: 接著在出現的畫面點選『Messaging API』,這就是LINE Bot帳號了: 接著在Create a channel的畫面中,選擇Bot的圖示(Channel Icon): 並填寫名稱(Channel name)、說明(Channel description)、分類和子分類(Category/Subcategory),並填寫你的mail和勾選同意條款後,按下Create即可: 取得重要資訊 建立好LINE Bot之後,我們要取得幾個重要的相關資訊,你可以在LINE Bot的首頁找到Messaging API,點選後,可以看到底下畫面: 即便你是該LINE Bot的建立者,你自己也要將其加入為好友才行測試。 透過上面的QR Code或Bot ID(@xxxxx...

關於AMA(Ask Me Anything)

圖片
5/5(週二) 中午 12 點到 1 點,有一個很特別的活動,名稱是 AMA(Ask Me Anything) 。在這個場合中,我為大家招集了我的幾位好友,你可以在這一段時間內,盡情的留言發問。 雖然此次的主題是與口罩查詢等疫情應用App相關(沒錯,我上面的這幾位好友,都是開發人員,各自也都開發了相當受歡迎的口罩查詢應用App),但如果您有其他相關問題,我相信這些大師們也都非常樂於回答。 在談 AMA(Ask Me Anything) 之前,我想先介紹我的朋友們… 我的朋友們 我認識 忠成(Jeffray Huang) 的時間已經不可考了,他最讓我覺得神奇的是,不管哪一個領域的開發技術,只要他有興趣的話,總是能像生來就有天分般的,輕易地專研出他人難以望其項背的成果。 在台灣說多不多,說少卻也不少的開發人員當中,唯一能讓我自嘆弗如、直接放棄比拚的,也就只有Jeffray一人。他總是像是個身懷絕技的獨行俠客,興致一來,時不時地略施身手仗義助人。他拯救我的那段故事,就寫在 這一篇blog 中… 第一次認識 佳新 ,就是和他一起出國玩(別誤會,同行還有許多男人。呃…怎麼好像有點越描越黑的感覺,那我還是別提我們去新宿的那晚…)。回台之後,才知道佳新可是譯作等身、獲獎無數的新創企業負責人,近年來在LINE Bot的應用開發上更是成果非凡,有鑑於此,我覺得AMA我必須找他來共襄盛舉。 Ian 位於國境之南,雖然我們都是微軟MVP,但因為距離,見面的次數應該是手指數的出來,平常也只能在研討會上才有互動。但此次COVID-19疫情爆發,Ian卻讓我驚呆了,他開發的那隻LINE Bot,甫上架即秒殺其他應用,而今的好友數量更是超越台北市政府官方LINE Bot(破百萬啦),直接輾壓所有我們這些玩了LINE Bot好幾年的開發者們。不僅如此,我知道他的應用中還加上了MS的AI服務(像是LUIS),因此口罩開發AMA我怎能放過他? James不僅和我一起協助過Build School作為講師和助教,也在.net相關社群中時常見面,而他也是台灣少見的Xamarin 跨平台開發 App開發專家。在這次疫情爆發時,他採用Xamarin同時開發出iOS和Android的口罩查詢應用,不管是品質和速度,都是一時之選,我自己不常開發手機App,但AMA如果只有LINE Bot沒有App,我覺得會是遺憾...

用C#開發LINE Bot(37) - 可變換官方帳號頭像暱稱的 Icon Switch機制

圖片
官方帳號(或LINE Bot)大多是代表著某一個機構團體或公司,官方帳號後面可能會有很多的操作人員,這些操作人員可能是不同的身分,但都使用官方帳號這個唯一的管道作為出口與加入此官方帳號為好友的用戶互動。 不過,這些都是該官方帳號在還沒有串接後端的WebHook之前。 一旦官方帳後透過後端的WebHook作為訊息回應的方式,那真正回應訊息的當然就是後端的程式碼了。 但你會不會覺得,官方帳號每次都是同一個頭像或暱稱,來對用戶回應,似乎有點枯燥乏味? 有沒有可能動態的切換官方帳號(LINE Bot)的頭像與暱稱呢? 可以的,LINE在本月開放了這個新的機制,可以讓您透過API來實現本功能: 上圖中其實是同一個官方帳號,但當用戶與之對話時,該官方帳號可以依照需要的情境,自動切換成不同的頭像與顯示暱稱。 怎麼實現的? 透過C#程式碼超級簡單,你只需要在發訊息的時候,額外設定sender.name與sender.iconUrl這兩個屬性即可: 透過上面這樣的指令,原本的程式碼幾乎完全不需要修改(只需要額外加入上面兩行指令),就可以在推送這則訊息的時候,改變官方帳號(LINE Bot)的頭像與暱稱。 請注意,這個頭像與暱稱是跟著訊息的,也就是說,如果你下一則訊息,沒有加上這兩行指令,則推送出的該訊息,就會顯示預設的頭像。 就這樣,是不是讓你的LINE Bot生動很多? (btw, 請升級到最新版 LineBotSdk (2.0.12+)才有支援) 這功能幹啥用? 如果你做的是一般機關行號型的LINE Bot,可能不容易想像這個功能的用途,但如果你做的是遊戲類的LINE Bot、或是你在LINE Bot中想要做些行銷活動,這個功能就非常好用。 例如,你可以在遊戲或行銷活動與用戶對談的過程中,把LINE Bot的頭像換成卡通人物,但當用戶離開遊戲或行銷折扣活動,變成詢問問題時,你可以再把頭像切換成客服人員,這樣即便只用一個官方帳號,用戶也可以更清楚的知道目前正在對談的情境和事件是什麼。 又或者,企業在舉行端午節的特惠活動時,你可以在發送訊息時,把頭像切換成屈原(或粽子)…這樣頗為生動的小動作,會讓你的LINE Bot生動不少。 相關的程式碼可以參考我放在 Github上的範例: https://github.com/isdaviddong/Example-LineIconSwitch...

用C#開發LINE Bot(36) - 關於LINE Notify的發送限制

圖片
當許多用戶開始使用 LINE Notify 之後,就會發現它真是一個方便好用的機制。 他的推播速度不亞於使用Messaging API的Push Command,甚至我覺得在群發上有更高的彈性與控制自由度。我們只需要得到用戶的Token,就可以輕易的透過HTTP POST發訊息給用戶,這使我不僅可以透過程式碼操作,也可以在command line或搭配script 工具操作,使用起來非常方便。 但是,總不可能是無止盡的發送吧,這個機制怎麼計算發送量與限制的呢? 目前看到LINE官方文件上的說明是… There is a limit to the number of times an API can be called on each service. The default number is set to 1000. The limit is per access token. The API Rate Limit status, can be checked on the response header of the API. 其實有點抽象,讓人有些分不清楚。 不過我們從上面說明也可以知道,呼叫API的次數限制是1000次,而且是Per Token的。也就是說,限制不在服務本身,而是在被呼叫的Token。看起來限制是針對我們取得的用戶Token,而非針對我們(開發人員)所申請的某一個LINE Notify Service。 另外,文件也讓我們知道,相關的資訊可以透過response header取得,針對Header的回覆訊息意義,文件上有說明如下: 我們可以嘗試對某一個token送出訊息,並觀察它的response header: 你會發現,當某個token被呼叫(上例是傳送訊息)時,response的header會透過X-RateLimit-Remaining回傳剩餘的可呼叫次數(上圖A)。不管是發送訊息,還是取得狀態(get status api),只要拿某一個token當做參數,該數字就會遞減。也就是你能針對這個token呼叫api的次數就會減少。 所以我們可以得到一個初步的結論,LINE Notify的限制,不是針對某一個服務、而是針對你取得的用戶Token。也不是針對該Token被發送訊息的量,而是該Token被作為Bearer token參數時被呼...

用C#開發 LINE Bot (34) - 以.net core控制LINE Bot發送Push訊息

圖片
接續著 上一篇 介紹如何用 .net core的WebAPI來建立 LINE Bot WebHook,這一篇我們介紹如何使用 .net core的 razor page web app來建立發送(push)訊息的LINE Bot。 請先確定你使用的是.net core 3.0以上(建議3.1)的版本: 接著透過『dotnet new webapp -n test01』指令,來建立一個新的WebApp: 建立完成之後,別忘了先透過CD test01指令切到專案所在的資料夾,然後我們用底下指令,來安裝幾個套件: dotnet add package isrock.web.core.razor 執行結果如下: 接著是重要的步驟,請利用底下指令,安裝我們在nuget上的linebot範本: dotnet new --install isRock.Template.LineBotPush 成功執行之後,請繼續執行底下指令: dotnet new LineBotPush 你會看到該範本的程式碼已經加入我們專案中了,接著,我們用 『code .  』指令來開啟vs code: 你會看到專案中已經有我們寫好的範例程式碼。現在已經可以執行了。 請在VS Code的終端機中,用dotnet run執行這個WebApp: 開始運行之後,你就可以在瀏覽器中,以 https://localhost:5001/__samplelinebot 網址來執行該頁面: 您可以在上面這個頁面中,輸入channel access token, user id…等資訊,當然還有要傳送的訊息,按下Push即可發送訊息。 程式碼相當簡單: 詳細的操作影片可以參考底下: ----------- 線上課程: https://www.udemy.com/line-bot/ 最新實體課程: http://www.studyhost.tw/NewCourses/LineBot 電子書: http://studyhost.blogspot.tw/2017/12/line-bot.html   實體書: https://www.tenlong.com.tw/products/9789865022662?list_name=srh LineBotSDK: https://www.nuget.org/pa...

LINE Developer Day 2019 現場筆記 (三) – LINE Bot 與 DevOps

圖片
前面 提過,LINE是一家非常熱愛Open Source的公司,諸多的solutions中,十有八九是藉由純Open Source技術來實現的,你很少很少很少看到其他軟體大廠的服務在LINE出現。也因此,當我在議程表當中,看到有Microsoft相關的場次時,不由得眼睛一亮,身為MVP,說什麼我也得前往瞧瞧… 議程表當中,共有兩個與Azure有關的場次,一場是由Kenichiro Nakamura分享的How to optimize bot development lifecycle with DevOps(這場非常有意思,我待會說),另一場則是Ayako Omori的Developing chatbot with Cloud 101 for LINE account auto-reply,兩場都是純日文演說,我也都硬著頭皮參加了。 Bot Framework Ayako Omoris那一場是少數沒有英文即時翻譯的日文演說,導致我基本上是完全聽不懂講者在說什麼,不過,我卻大致可以掌握整場的內容。很矛盾? 一點也不。 因為內容是我非常熟悉的Azure Cognitive Services與Bot Framework,我發現技術語言是跨國籍的,我雖然完全聽不懂講者的日文,但只看Demo和操作,基本能夠掌握八成左右(所以如果讀者想去國外工作,大可不用過度擔心語文的問題),講者除了大致完整的介紹了MS Bot Framework與LINE Bot如何整合,還有如何使用LUIS和QnA Maker服務,這些過去我在 書籍 和 線上課程 中大致也都有介紹,講者能在幾十分鐘的時間內把這些內容都塞進去,也算是不容易了。 除此之外,她也提到了MS最近釋出的 BotFramework-Composer (這就是個新玩意了): Bot Framework Composer是一套 open source 的Chat Bot設計工具,可以讓你用視覺化的方式來建立Chat Bot。除了支援上圖這樣的所視及所得對談設計界面,也支援LUIS和QnA Maker,讓設計人員可以自由的使用這些雲端服務並整合在Bot當中,雖然目前還只是預覽版本,但未來頗值得期待。我知道台灣坊間也不乏這樣的工具,但掛著微軟的招牌,加上又是open source,背後有MS Bot Framework撐腰,又有自然語言語意...