Рубрики
Без рубрики

Построить бот рождения с Twilio и электронную таблицу

То, что мы создадим, это следующее. Отправлено с вашей пробной учетной записи Twilio <- потому что я использую ... Tagged с Python, Twilio, электронной таблицей.

То, что мы создадим, это следующее.

Отправлено с вашей пробной учетной записи Twilio <- потому что я использую пробную учетную запись (бесплатно)

Привет, Коджи, с днем рождения! Хорошего дня. это сообщение, которое отправляется сценарием Python с API Twilio.

Как это устроено

Проведите сценарий Python где -нибудь (например, Heroku) и пейте сценарий каждые 24 часа. В качестве первого шага, скрипт проверяет электронную таблицу Google, в которой есть список получателей (клиентов) с номером телефона и день рождения. Конечно, электронная таблица может быть текстовым файлом, файлом CSV, файлом Excel или DB. Это зависит от того, сколько клиентов в списке и какую службу хостинга вы будете использовать для этого. Кроме того, как часто нужно будет обновлять список, и эти люди знакомы с инструментом CLI или нет.

В этом случае я использую таблицу Google, потому что это будет поддерживаться нетехнологичным человеком.

Еще одна вещь, я использую поэзию ( https://python-poetry.org/ )

Создать поэтический проект

$ poetry new birthday_bot
$ cd birthday_bot

Установите пакеты

В этой статье мы используем GSiRead, OAuth2client и Twilio Первые 2 пакета предназначены для доступа к электронной таблице Google, а последний предназначен для использования API Twilio.

gsiRead https://gspread.readthedocs.io/en/latest/index.html

Twilio https://pypi.org/project/twilio/

$ poetry add gspread oauth2client twilio

Setup Env для таблицы Google

GSiReD

Burnash/GsiRead

Google Sheets Python API

Простой интерфейс для работы с Google Sheets.

Функции:

  • Откройте электронную таблицу Название , ключ или URL Анкет
  • Читать, написать и форматировать ячейки.
  • Обмен и контроль доступа.
  • Пакетные обновления.

Установка

pip install gspread

Требования: Python 3.6+.

Основное использование

  1. Создать учетные данные в консоли Google API

  2. Начните использовать gsiRead:

import gspread
gc = gspread.service_account()

# Open a sheet from a spreadsheet in one go
wks = gc.open("Where is the money Lebowski?").sheet1

# Update a range of cells using the top left corner address
wks.update('A1', [[1, 2], [3, 4]])

# Or update a single cell
wks.update('B42', "it's down there somewhere, let me take another look.")

# Format the header
wks.format('A1:B1', {'textFormat': {'bold': 

Вот руководство по настройке https://gspread.readthedocs.io/en/latest/oauth2.html

Если вы не хотите использовать электронную таблицу Google для хранения информации получателей. Вы можете пропустить этот шаг и добавить функцию для чтения текстового файла/файла CSV.

Получить Twilio API

Нам нужно account_id , auth_token , и Phone_Number, чтобы отправить сообщение на смартфон.

Страница справочного центра Twilio очень полезна, чтобы получить их. https://support.twilio.com/hc/en-us/articles/223136027-Auth-Tokens-and-How-to-Change-Them

код

app.py

import gspread
import json
from oauth2client.service_account import ServiceAccountCredentials
import datetime
from twilio.rest import Client

# create client
account_id = 'Twilio_account_id'
auth_token = 'Twilio_auth_token'
phone_number = 'Twilio_phone_number'
client = Client(account_id, auth_token)

# connect google spreadsheet and return worksheet info
def connect_gspread(jsonf: str, key:str) -> gspread.models.Worksheet:
    #print('connect_gspread')
    scope = ['https://spreadsheets.google.com/feeds','https://www.googleapis.com/auth/drive']
    credentials = ServiceAccountCredentials.from_json_keyfile_name(jsonf, scope)
    gc = gspread.authorize(credentials)
    SPREADSHEET_KEY = key
    worksheet = gc.open_by_key(SPREADSHEET_KEY).sheet1
    # print(type(worksheet))
    return worksheet

# send a message to a recipient_number
def send_msg(name: str, recipient_number: str):
    # add recipient name to the message
    message = client.messages.create(
        body = 'Hi {}, Happy Birthday! Have a wonderful day.'.format(name),
        from_ = phone_number,
        # from_ = 'recipient_number',
        to = recipient_number
    )


jsonf = './integral.json'
spread_sheet_key = 'spreadsheet_key'
ws = connect_gspread(jsonf,spread_sheet_key)

# get cell value from worksheet(ws)
names = ws.col_values(1)
birthdays = ws.col_values(2)
numbers = ws.col_values(3)

today = datetime.datetime.now()
today = today.strftime("%m/%d")
print('today is {}'.format(today))

if birthdays[1] == today:
    send_msg(names[1], numbers[1])
    print('sent a msg')
else:
    print('no target')

запустить сценарий

$ poetry run python app.py
today is 03/10
sent a msg

Оригинал: “https://dev.to/kojikanao/build-a-birthday-bot-with-twilio-and-spreadsheet-33a6”