iT邦幫忙

2021 iThome 鐵人賽

DAY 15
1
永豐金融APIs

openAPI 對接實務系列 第 15

[day15]幾個常用的LineAPI

今天Heroku大當機0rz,寫一點Line API的使用教學

LineSDK已經將大部分的實作功能與資料模型都包入了,這可以加快開發的速度:

line_bot_api = LineBotApi('YOUR_CHANNEL_ACCESS_TOKEN')
handler = WebhookHandler('YOUR_CHANNEL_SECRET')

取得機器人資訊

bot_info = line_bot_api.get_bot_info()

print(bot_info.display_name)
print(bot_info.user_id)
print(bot_info.basic_id)
print(bot_info.premium_id)
print(bot_info.picture_url)
print(bot_info.chat_mode)
print(bot_info.mark_as_read_mode)

推送、回覆訊息

回覆訊息

line_bot_api.reply_message('<reply_token>', TextSendMessage(text='Hello World!'))

推送訊息

try:
  line_bot_api.push_message('<to>', TextSendMessage(text='Hello World!'))
except LineBotApiError as e:
  # error handle

免費帳號有單月500則推送訊息的限制,回覆則不用錢

取得使用者資訊

在使用的時候,知道使用者的userid後,就能夠藉此取得使用者的顯示名稱(暱稱)、系統的使用語言、大頭貼、狀態消息,這可以提供一點使用者的資訊

profile = line_bot_api.get_profile(user_id)

print(profile.display_name)
print(profile.user_id)
print(profile.picture_url)
print(profile.status_message)

這邊要注意一點,Line的JSON變數命名與Python不同,例如使用者ID,在Line送過來的Json body內以events.source.userID方式存放,但在Python,則為event.source.user_id,在資料變數命名上有許多的不同需要確認

取得使用者訊息中的非文字內容

如圖片、影片、音訊、檔案等

message_content = line_bot_api.get_message_content(message_id)

with open(file_path, 'wb') as fd:
    for chunk in message_content.iter_content():
        fd.write(chunk)

Line-SDK的意外處理

通常會是格式或參數錯誤,錯誤說明可以參考

try:
    line_bot_api.push_message('to', TextSendMessage(text='Hello World!'))
except linebot.exceptions.LineBotApiError as e:
    print(e.status_code)
    print(e.request_id)
    print(e.error.message)
    print(e.error.details)

今天主要在翻API文件,還有heroku在搞,明天會把對話紀錄生出來.....


上一篇
[day14] 接收使用者的Line訊息
下一篇
[day16]機器人對話紀錄
系列文
openAPI 對接實務30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言