[PYTHON] [Supplément à l'article précédent] J'ai essayé d'utiliser l'API PUSH de LINE Bot, qui était devenue disponible dans le plan gratuit avant que je le sache.

À propos de cet article

Supplément à l'article précédent "[Move LINE Bot implémenté en Python (Flask)" sans utiliser Heroku "(https://qiita.com/hiro0236/items/84581c5e4481185d4a5c)". Dans le passé, avec le plan gratuit LINE Bot, l'envoi d'un message à un utilisateur se limitait à répondre à un message envoyé par l'utilisateur. Je ne pouvais pas utiliser l'API PUSH pour envoyer un message à l'utilisateur à partir d'ici, mais avant de le savoir, j'ai pu utiliser l'API PUSH même avec le plan gratuit. En conséquence, la gamme de développement s'est étendue même avec le plan gratuit, nous allons donc étudier comment l'utiliser.

Pourquoi est-il prêt à être utilisé avant que vous ne le sachiez?

Après enquête, il semble qu'il y ait eu une annonce comme celle-ci du responsable de LINE. Il semble que l'API PUSH puisse être utilisée même dans le plan gratuit à partir de juin 2019 environ. Cependant, il y a une limite de 1 000 par mois **. Un service avec plus de 100 utilisateurs semble difficile, mais s'il s'adapte à quelques dizaines de personnes (selon l'application), cela semble suffisant.

Dans tous les cas, il ne fait aucun doute que la gamme de développement s'est considérablement élargie pour les ingénieurs développant avec un plan libre.

Type de message push

[Référence officielle] Selon (), il existe les quatre types suivants.

--Push message (envoyer un message à un utilisateur en utilisant l'ID utilisateur comme clé) --Message multiplex (envoyer un message à plusieurs utilisateurs en utilisant l'ID utilisateur comme clé)

Essayez d'envoyer un message

Vous pouvez accéder directement à l'API LINE avec curl, etc., mais depuis que j'ai installé line-bot-sdk-python dans l'article précédent J'écrirai du code pour envoyer un message push en Python. Implémenter lors de la lecture Implémentation de line-bot-sdk-python.

Puisqu'il s'agit d'une continuation de l'article précédent, nous continuerons en supposant que line-bot-sdk etc. a déjà été introduit.

Envoyer un message push

Il peut être réalisé avec le code suivant. Si vous envoyez simplement un message, vous pouvez facilement l'implémenter comme suit.

push.py


from linebot import LineBotApi
from linebot.models import TextSendMessage

CHANNEL_ACCESS_TOKEN = "Définir le jeton d'accès au canal"
line_bot_api = LineBotApi(CHANNEL_ACCESS_TOKEN)

def main():
    to = "Spécifiez l'ID utilisateur"
    messages = TextSendMessage(text="Test d'envoi de notifications push")
    line_bot_api.push_message(to, messages=messages)

if __name__ == "__main__":
    main()

Lorsque je l'ai exécuté, un message a été envoyé par Bot comme suit.

linebot3_1.png

Envoyer un message multicast

J'envoie des messages à plusieurs utilisateurs car je n'ai qu'un seul compte LINE Je n'ai pas été en mesure de confirmer s'il sera envoyé à plusieurs personnes.

multicast.py


from linebot import LineBotApi
from linebot.models import TextSendMessage

CHANNEL_ACCESS_TOKEN = "Définir le jeton d'accès au canal"
line_bot_api = LineBotApi(CHANNEL_ACCESS_TOKEN)

def main():
    to = ["Spécifiez l'ID utilisateur à envoyer en tant que type de liste"]
    messages = TextSendMessage(text="Test multiplicateur")
    line_bot_api.multicast(to, messages=messages)

if __name__ == "__main__":
    main()

linebot3_2.png

Envoyer un message à diffusion restreinte

Je n'ai pas compris un peu. Il semble qu'il sera réduit en fonction de l'âge et du sexe de l'utilisateur, mais on ne sait pas comment l'âge et le sexe sont définis en tant qu'informations uniques de l'utilisateur. Vous pouvez également obtenir ces informations en essayant d'obtenir votre profil avec API pour obtenir le profil utilisateur. Zu. Dans un prochain numéro, j'enquêterai un peu plus.

Envoyer un message diffusé

J'envoie un message à tous les amis de Bot, mais je ne suis toujours pas sûr car je suis le seul ami de Bot.

broadcast.py


from linebot import LineBotApi
from linebot.models import TextSendMessage

CHANNEL_ACCESS_TOKEN = "Définir le jeton d'accès au canal"
line_bot_api = LineBotApi(CHANNEL_ACCESS_TOKEN)

def main():
    messages = TextSendMessage(text="Test de diffusion")
    line_bot_api.broadcast(messages=messages)

if __name__ == "__main__":
    main()

linebot3_3.png

Prend en charge autres que les messages texte

En plus des messages texte, line-bot-sdk-python prend également en charge l'envoi de tampons et d'images. Je n'ai vérifié que les tampons et les images cette fois, mais pour autant que je vois l'implémentation Il semble que les informations de localisation, etc. peuvent également être envoyées

Envoyer le timbre

Voir ici pour le package_id et le sticker_id requis pour spécifier le tampon. En regardant les comptes officiels des entreprises, il semble que certains timbres soient vendus dans les boutiques de timbres. On ne sait pas comment cela est réalisé. Enquêter un peu plus.

push_sticker.py


from linebot import LineBotApi
from linebot.models import StickerSendMessage

CHANNEL_ACCESS_TOKEN = "Définir le jeton d'accès au canal"
line_bot_api = LineBotApi(CHANNEL_ACCESS_TOKEN)

def main():
    to = "Spécifiez l'ID utilisateur"
    messages = StickerSendMessage(package_id='11537', sticker_id='52002734')
    line_bot_api.push_message(to, messages=messages)

if __name__ == "__main__":
    main()

linebot3_4.png

Envoyer l'image

push_image.py


from linebot import LineBotApi
from linebot.models import ImageSendMessage

CHANNEL_ACCESS_TOKEN = "Définir le jeton d'accès au canal"
line_bot_api = LineBotApi(CHANNEL_ACCESS_TOKEN)

def main():
    to = "Spécifiez l'ID utilisateur"
    messages = ImageSendMessage(original_content_url="https://pbs.twimg.com/profile_images/1201406146822557696/ewFFvnAa_400x400.jpg ", preview_image_url="https://pbs.twimg.com/profile_images/1201406146822557696/ewFFvnAa_400x400.jpg ")
    line_bot_api.push_message(to, messages=messages)

if __name__ == "__main__":
    main()

linebot3_5.png

en conclusion

Dans l'article précédent, j'ai écrit un nouvel article sur mes futurs problèmes personnels, mais de nouveaux problèmes sont revenus. De plus, nous mettrons à jour l'article ou créerons un nouvel article au fur et à mesure de la progression de l'enquête.

Je vous serais reconnaissant de bien vouloir me faire savoir s'il y a des erreurs dans les informations que j'ai fournies.

Recommended Posts

[Supplément à l'article précédent] J'ai essayé d'utiliser l'API PUSH de LINE Bot, qui était devenue disponible dans le plan gratuit avant que je le sache.
Avant de le savoir, je ne pouvais pas utiliser de traits d'union dans l'ID client de l'API Channel de GAE.
P100-PCIE-16GB a été ajouté au GPU de Google Colab avant que je le sache
J'ai essayé de visualiser les paroles de GReeeen, que j'écoutais de façon folle dans ma jeunesse mais que je ne l'écoutais plus.
J'ai essayé d'extraire le texte du fichier image en utilisant Tesseract du moteur OCR
J'ai essayé d'utiliser l'API de Sakenowa Data Project
J'ai essayé d'automatiser la construction d'un environnement pratique à l'aide de l'API SoftLayer d'IBM Cloud
[Python] J'ai essayé de collecter des données en utilisant l'API de wikipedia
J'ai essayé de résumer le contenu de chaque paquet enregistré par Python pip en une seule ligne
J'ai essayé d'obtenir l'index de la liste en utilisant la fonction énumérer
J'ai regardé les méta-informations de BigQuery et essayé de les utiliser
J'ai essayé d'utiliser l'API checkio
J'ai essayé de transformer l'image du visage en utilisant sparse_image_warp de TensorFlow Addons
J'ai essayé d'obtenir les résultats de Hachinai en utilisant le traitement d'image
J'ai essayé d'estimer la similitude de l'intention de la question en utilisant Doc2Vec de gensim
J'ai essayé de créer un LINE BOT "Sakurai-san" avec API Gateway + Lambda
Le cas où l'installation de pip est devenue plus facile avant que je ne le sache
J'ai essayé de résumer diverses phrases à l'aide de l'API de synthèse automatique "summpy"
J'ai essayé d'extraire et d'illustrer l'étape de l'histoire à l'aide de COTOHA
J'ai essayé d'obtenir les informations sur le film de l'API TMDb avec Python
J'ai essayé d'afficher la valeur d'altitude du DTM dans un graphique
J'ai essayé l'histoire courante de l'utilisation du Deep Learning pour prédire la moyenne Nikkei
En utilisant COTOHA, j'ai essayé de suivre le cours émotionnel de la course aux meros.
Je voulais connaître le nombre de lignes dans plusieurs fichiers et j'ai essayé de l'obtenir avec une commande
J'ai essayé d'expliquer comment obtenir le contenu de l'article avec l'API MediaWiki d'une manière facile à comprendre avec des exemples (Python 3)