使用C#開發LineBot(5) - 透過程式碼讓Linebot發送圖片、貼圖

這幾天我們更新了Nuget Package LineBotSDK,加上了一組非靜態的bot類別,現在你可以透過底下這段程式碼,直接建立一個bot物件實體,來操作所有有關發送Line訊息、或是圖片、貼圖…等工作…

注意上面這段程式碼,其中的圖片URI必須是https,否則會發生錯誤,圖片支援.png的格式(估計其他也支援,但我沒試)。

透過物件實體(Object instance)來操作,省去了呼叫PushMessage的時候一直要傳遞AccessToken的不方便,同時在記憶體管理上也比較安全。

這組bot類別還提供了傳送貼圖的功能,例如:

上面這段程式碼可以發送出底下這樣的貼圖:

為何傳入packageId與StickerId參數 1 , 2 是出現上面這個貼圖呢? 目前LineBot可以用的貼圖就那幾組,請參考底下連結: https://devdocs.line.me/files/sticker_list.pdf 

上面這個連結顯示出了目前有可以用的PackagId與StickerId。

別忘了,使用上述的功能必須先在你的專案中加入最新版(0.3.9)的LineBotSDK喔:

OK,盡情的傳送貼圖吧,Have fun~

----------------------
相關課程: http://www.studyhost.tw/NewCourses/LineBot

留言

寫道…
作者已經移除這則留言。
Clone寫道…
可以教Imagemap的baseUrl的用法嗎?
Unknown寫道…
有辦法傳txt或者PDF檔案嗎
isDavid寫道…
@Clone,
可以

@Lin Beisien,
沒有傳送檔案的API,但其實你直接把檔案上傳到某個位置,然後傳送該檔案的Hyper link就可以了...
Kevin表示…
請問程式碼中的userId跟PushMessage與SDK中的ReplyMessage有什麼差異呢?
一定需要userId嗎? 謝謝。
isDavid寫道…
@Kevin,

reply原則上只需要replyToken。
Push Message則肯定需要UserId。

UserID可以透過你的用戶跟你的bot對談時,Receieved Message的source屬性取得。

bot的行為在接收到訊息時,可以直接回應,這時可以透過reply Message機制,以replyToken來回應。一旦回應過了,或超過一定時間沒有回應,就無法回應了。這時就只能主動發訊息給用戶,這個行為就是Push Message。

Lin表示…
您好,有看到你說UserID可以透過你的用戶跟你的bot對談時,Receieved Message的source屬性取得。
請問有範例的程式嗎? 第一次做不太熟 感謝回應!!
isDavid寫道…
@Lin,

請參考:
https://github.com/isdaviddong/LineBotSdkExample/blob/master/LineBotSdkExample/Controllers/LineChatController.cs

User Id可以從ReceivedMessage.events[0].source.userId取得。
匿名表示…
您好,請問該如何接收用戶傳遞過來的圖片或語音呢?
isDavid寫道…
to 匿名 ,
https://channel9.msdn.com/Shows/NET-Walker-5/bot03
匿名表示…
老師謝謝,那再請教您,您的SDK中ImagemapMessage的作用又是什麼? 該如何使用?
isRock.LineBot.ImagemapMessage
匿名表示…
請教如果要傳語音要如何實做?
我試過直接像圖片這樣傳網址,似乎不行。
Lin表示…
您好,想請問能取得使用者的名稱嗎 還是說只能取得UserID而已
感謝回應!!!!
isDavid寫道…
@Lin,

可以取得用戶名稱,
LineBotSdk 有一個API是 GetUserProfile...可以參考看看。
steven 張寫道…
作者已經移除這則留言。
steven 張寫道…
作者已經移除這則留言。
水餃寫道…
作者已經移除這則留言。
水餃寫道…
作者已經移除這則留言。
wu寫道…
老師好~ 想請問老師, 我在nuget 裝 line.bot.sdk 2.0 版一直出現下面錯誤 vs2015
==============================================================================
嚴重性 程式碼 說明 專案 檔案 行 隱藏項目狀態
錯誤 無法安裝封裝 'Line.Bot.SDK 2.0.0'。您正嘗試將此封裝安裝到以 '.NETFramework,Version=v4.5' 為目標的專案,但該封裝不包含任何與架構相容的組件參考或內容檔。如需詳細資訊,請連絡封裝作者。 0
不知是什麼原因?
isDavid寫道…
@wu,

因為你安裝錯了唷,我們開發的是底下這個:
https://www.nuget.org/packages/LineBotSDK
不是Line.Bot.SDK 2.0.0
Harold's Blog寫道…
作者已經移除這則留言。
匿名表示…
https://www.nuget.org/packages/LineBotSDK
確定是這個

無法安裝封裝 'LineBotSDK 2.0.1'。您正嘗試將此封裝安裝到以 '.NETFramework,Version=v4.0' 為目標的專案,但該封裝不包含任何與架構相容的組件參考或內容檔。如需詳細資訊,請連絡封裝作者。

這個網誌中的熱門文章

使用 Airtable 在小型需求上取代傳統資料庫

精彩(且驚人)的Semantic Kernel入門範例

使用Semantic Kernel 建立自然語言請假系統

在 LINE Bot 開發中使用Semantic Kernel建立自然語言請假系統

專業的價值...