#python #twilio
Вопрос:
Итак, у меня есть функция, которая должна позволить мне отправлять несколько SMS в список словарей в моем сценарии. Так, например, мой список словарей выглядит следующим образом
users = [{'User': entry.name.value, 'Number':entry.telephoneNumber.value, 'days':days_left.days}]
и у меня есть функция в классе, которая будет отправлять sms на каждый номер телефона в списке словарей, но в каждом sms она найдет и прикрепит нужное имя и оставшиеся дни.
def send_sms():
client = Client(twilio_account_sid, twilio_auth_token)
for d in users:
for name, number in d.items():
message = client.messages.create(
to=number,
from_=twilio_from_phone_number,
body=f'Hello {name}, you have {days_left.days} days left to reset your password. -IT')
print(message.sid)
self.app.log.info(f'Sent {len(users)} sms msgs to users')
send_sms()
поэтому я немного разбираюсь в логике внутри функции. Мне нужно иметь доступ к отдельным именам и оставшимся дням. Для справки:
days_left = (pwd_expire_date.astimezone(tz=None) - today)
осталось дней = время истечения срока действия пароля каждого пользователя — сегодняшняя дата(с учетом того, сколько дней у них осталось)
Это скрипт для доступа к объявлению и проверки пароля пользователя в течение 30,15,3 дней, и если это так, отправьте им SMS и уведомление по электронной почте. Это моя первая настоящая задача как инженера, и это немного больше, чем я понимаю. Я знаю, что моя логика цикла for неверна, потому что она просто захватывает ключ, значение. Но как бы я повторил свой список словарей и извлек соответствующие значения? PS(Тело-всего лишь пример). Я не уверен, что у вас будет MWE, потому что это связано с моим объявлением, но я думаю, что моя проблема связана с базовым синтаксисом python. Спасибо за любую помощь. Если это глупый вопрос, я прошу прощения.
Мой ожидаемый результат таков :
Each user receive a SMS to their specific number, with their name and days till they have to reset their password.
'Hello John, you have 15 days left to reset your password. -IT'
Ответ №1:
Евангелист-разработчик Twilio здесь.
Я думаю, что ваш код в основном верен! Ваш цикл по пользователям for d in users:
кажется мне правильным. На этом этапе вы должны найти, что d
это словарь пользовательских данных.
Я думаю, что ваша проблема заключается в использовании for name, number in d.items():
. Вместо того, чтобы пытаться получить данные из массива .items()
возвращаемых кортежей, будет сложно. Вместо этого вы можете получить доступ к данным из словаря напрямую, используя квадратные скобки (или get
метод) и имя поля, например d["Username"]
. Попробуй это:
def send_sms():
client = Client(twilio_account_sid, twilio_auth_token)
for d in users:
message = client.messages.create(
to=d["Number"],
from_=twilio_from_phone_number,
body=f'Hello {d["Username"]}, you have {d["days"]} days left to reset your password. -IT')
print(message.sid)
self.app.log.info(f'Sent {len(users)} sms msgs to users')
send_sms()
Комментарии:
1. Вау, Фил, спасибо тебе! Теперь в этом так много смысла, и, похоже, у меня есть результат, который я ищу! Я просто неправильно смотрел на логику.