Невозможно сериализовать объекты ответа Twilio Python SDK как простые объекты dict
Я запрашиваю доступные телефонные номера так:
from twilio.rest import Client
client = Client(settings.TWILIO_ACCOUNT_SID, settings.TWILIO_AUTH_TOKEN)
available = client.available_phone_numbers("US").local.list()
Я хотел бы перебрать все доступные телефонные номера в виде объектов словаря, но, насколько я могу судить, в SDK Twilio для Python ничего подобного нет.
Мне пришлось бы сделать следующее:
results = [{
"address_requirements": phone.address_requirements,
"beta": phone.beta,
"capabilities": phone.capabilities,
"MMS": phone.MMS,
"SMS": phone.SMS,
"fax": phone.fax,
"voice": phone.voice,
"friendly_name": phone.friendly_name,
"iso_country": phone.iso_country,
"lata": phone.lata,
"locality": phone.locality,
"longitude": phone.longitude,
"phone_number": phone.phone_number,
"postal_code": phone.postal_code,
"rate_center": phone.rate_center,
"region": phone.region
} for phone in available]
Это кажется глупым, поскольку API возвращает именно тот формат, который мне нужен. У меня возникает соблазн отказаться от SDK и напрямую звонить.
1 ответ
После долгого поиска и изучения исходного кода я смог найти простой способ получить доступ к нужным мне данным. Он использует частный атрибут, который вы не должны использовать, но если они не предоставляют то, что вам нужно, вы должны делать то, что должны.
Я могу достичь желаемого результата, хотя мне все равно придется запускать лишний ненужный цикл:
from twilio.rest import Client
client = Client(settings.TWILIO_ACCOUNT_SID, settings.TWILIO_AUTH_TOKEN)
available = client.available_phone_numbers("US").local.list()
results = [phone._properties for phone in available]