[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在搞,明天会把对话纪录生出来.....


<<:  建立第一个RESTful api server(实作篇)-2(Day14)

>>:  [Day26] Esp32s + IFTTT + LINE - (程序码讲解)

区块型加密器(cipher block)的操作模式(mode of operation)

.**电子密码本(ECB)**接受纯文本作为输入。 .**密码块链接(CBC)**接受“纯文本XOR...

DAY20 图片处理套件-OpenCV

昨天我们介绍了深度学习的概念和应用,今天来介绍一下图片的处理,前一章我们有提到,一张图片对於神经网路...

Day 14:安全杂凑演算法(SHA)

上回提到的杂凑函式,除了杂凑表外,还有不少有趣的应用。 其中一种就是安全杂凑演算法(全名Secure...

Day30 帝君最爱 凤九拿手菜-糖醋鲈鱼

始於糖醋,终於糖醋,一如挑战30天铁人出好菜的滋味,酸酸甜甜 最後一场铁人,再次挑战炸物料理,有了...

[Day 21] 资料关联

资料关联 一对一(One to One) 一对多(One to Many) 多对多(Many to ...