先上架构图:由AI生成
本次内容首先需要在 from linebot.v3.messaging import ( 导入更多内容:
文章的一些属性和名词解释,没有做太多详细说明,具体可参考API 文件
from linebot.v3.messaging import (
Configuration,
ApiClient,
MessagingApi,
ReplyMessageRequest,
#这三个增加到此处
TemplateMessage,
ButtonsTemplate,
#增加
PushMessageRequest,
BroadcastRequest,
MulticastRequest,
TextMessage,
# 为其它更多事件添加导入
Emoji, #表情符号,
VideoMessage,#视频信息
AudioMessage,#音频信息
LocationAction,#地址信息
StickerMessage,#
ImageMessage, # 图片信息
#增加 template 相关。
TemplateMessage,
ConfirmTemplate,
CarouselTemplate,
CarouselColumn,
ButtonsTemplate,
ImageCarouselColumn,
ImageCarouselTemplate,
MessageAction,
URIAction,
PostbackAction,
DatetimePickerAction
)
- 第一个函数 是 confirm
@handler.add(MessageEvent,message=TextMessageContent)
def handle_message(event):
text = event.message.text
with ApiClient(configuration) as api_client:
line_bot_api = MessagingApi(api_client)
# confirm template
if text=="confirm":
confirm_template = ConfirmTemplate(
text='今天学习AI 开发了吗?', #确认对话的标题
actions=[
MessageAction(label='Yes', text='Yes'), # MessageAction 有标签和text 两个属性,单击返回的是text内容
MessageAction(label='No', text='No')
]
)
template_message=TemplateMessage(
alt_text='Confirm alt text',
template=confirm_template
)
line_bot_api.reply_message(
ReplyMessageRequest(
reply_token=event.reply_token,
messages=[template_message] # 调用定义好的 template_message 方法。
)
)
执行效果:
第二个函数 Buttons
# button Template
elif text =='Buttons':
#url= request.url_root +'/MoreType/1.jpg'# 由于一直报错,我使用的博文中的图片。
url= "https://i-blog.csdnimg.cn/direct/369fc618763c4e6088e5722ac5dfe340.png"
app.logger.info('url='+ url)
buttons_template = ButtonsTemplate(
thumbnail_image_url=url,
title="示范",
text="详细说明",
actions=[
# URI 属性label 和 uri
URIAction(label='connect',uri='https://i-blog.csdnimg.cn/direct/369fc618763c4e6088e5722ac5dfe340.png'),
PostbackAction(label='Back Value', data='ping', displayText ="transfered"),
MessageAction(label='To "Hello"', text="Hello"),
DatetimePickerAction(label="select time",data="Time",mode="datetime")
])
template_message= TemplateMessage(
alt_text = "This is a buttons template",
template=buttons_template
)
line_bot_api.reply_message(
ReplyMessageRequest(
reply_token= event.reply_token,
messages=[template_message]
)
)
执行效果:
第四个属性:
# carousel
elif text == 'Carousel':
url= request.url_root +'/MoreType/2.png'# 由于一直报错,我使用的博文中的图片。 # MoreType
url= url.replace("http","https")
url= "https://i-blog.csdnimg.cn/direct/369fc618763c4e6088e5722ac5dfe340.png"
app.logger.info('url='+ url)
carousel_template = CarouselTemplate(
columns=[
CarouselColumn(
thumbnail_image_url=url,
title="No.1",
text="这是第一项的描述",
actions=[
URIAction(
label='按我前往Google',
uri="https://www.google.com"
)
]
),
CarouselColumn(
thumbnail_image_url=url,
title="No.2",
text="这是第二项的描述",
actions=[
URIAction(
label="Go to Bing",
uri="https://www.bing.com"
)
]
)
]
)
carousel_message = TemplateMessage(
alt_text = "This is Carousel Template",
template=carousel_template
)
line_bot_api.reply_message(
ReplyMessageRequest(
reply_token= event.reply_token,
messages=[carousel_message]
)
)
执行效果