Twilio 및 스프레드시트로 생일 봇 구축
Twilio 평가판 계정에서 전송 <-- 평가판 계정을 사용하기 때문에(무료)
Hi Koji, Happy Birthday! Have a wonderful day.
Twilio API를 사용하여 Python 스크립트에서 보낸 메시지입니다.작동 방식
어딘가(예: Heroku)에 Python 스크립트를 호스팅하고 24시간마다 스크립트를 시작합니다.
첫 번째 단계로 스크립트는 전화번호와 생일이 포함된 수신자(클라이언트) 목록이 있는 Google 스프레드시트를 확인합니다. 물론 스프레드시트는 텍스트 파일, CSV 파일, 엑셀 파일, DB 등이 될 수 있습니다. 이는 목록에 있는 클라이언트 수와 이를 위해 사용할 호스팅 서비스 종류에 따라 다릅니다. 또한 사람/사람들이 목록을 업데이트해야 하는 빈도와 해당 사람들이 CLI 도구에 익숙한지 여부입니다.
이 경우 비전문가가 관리할 Google 스프레드시트를 사용하고 있습니다.
한 가지 더, 저는 Poetry( https://python-poetry.org/ )를 사용하고 있습니다.
시 프로젝트 만들기
$ poetry new birthday_bot
$ cd birthday_bot
패키지 설치
이 기사에서는 gspread, oauth2client 및 twilio를 사용합니다.
처음 2개의 패키지는 Google 스프레드시트에 액세스하기 위한 것이고 마지막 패키지는 Twilio API를 사용하기 위한 것입니다.
gspread
https://gspread.readthedocs.io/en/latest/index.htmltwilio
https://pypi.org/project/twilio/$ poetry add gspread oauth2client twilio
Google 스프레드시트 환경 설정
gspread
버나시 / gspread
Google 스프레드시트 Python API
Google 스프레드시트 Python API v4
Google Sheets 작업을 위한 간단한 인터페이스.
특징:
설치
pip install gspread
Requirements: Python 3.6+.
기본 사용법
-
Start using gspread:
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':
…
Here is the guide to setup
https://gspread.readthedocs.io/en/latest/oauth2.html
If you don't want to use Google Spreadsheet to hold recipients' information. You can skip this step and add a function to read a text file/csv file.
Twilio API 얻기
We need to account_id
, auth_token
, and phone_number to send a message to a smartphone.
Twilio's help center page is very useful to get them.
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
Reference
이 문제에 관하여(Twilio 및 스프레드시트로 생일 봇 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/0xkoji/build-a-birthday-bot-with-twilio-and-spreadsheet-33a6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)