Невозможно сериализовать объекты ответа 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]
Другие вопросы по тегам