Я получил это из HTTP-запроса:
{u'accountDirectDialId': u'...', u'number': u'...', u'messageType': u'simple_message', u'configData': {u'audios': {u'message_audio': {u'duration': None, u'hashFile': u'...', u'id': u'16990559-acb9-11ea-af69-522c847d095a', u'name': None, u'uri': u'https://...'}}}, u'inboundCallerId': u'...', u'maxDestinationRetry': 1, u'hasVoicemail': False, u'voIp': {u'codePhone': 00}, u'hasMessage': True}
Это хранится в переменной.
Тогда, если я сделаю это, это сработает отлично:
myvar["configData"]["audios"]["message_audio"]
Но если я go на один шаг дальше:
myvar["configData"]["audios"]["message_audio"]["uri"]
Это с треском проваливается! Почему так происходит? uri - это просто параметр в "message_audio", когда я делаю это:
print('Audio URI: "%s"\n' % type(myvar["configData"]["audios"]) )
Я получаю
Python Error by calling script "mass": <type 'exceptions.TypeError'>
Message: string indices must be integers, not str
Exception: None
Traceback (most recent call last)
Вывод должен быть
'https://...'
Может кто-нибудь help?
ОБНОВЛЕНИЕ:
печать:
На один уровень выше: print ('[% s]: Audio URI: "% s" \ n'% (session_sip_call_id, type (CData.get ("configData", None) .get ("aud ios", None) .get ("message_audio", None))))
Выводит: Audio URI: ""
Но: print ('[% s]: Audio URI: "% s" \ n'% (session_sip_call_id, type (CData.get ("configData", None) .get ("aud ios" , Нет) .get ("message_audio", Нет) .get ("uri", Нет))))
возвращает:
Audio URI: "<type 'unicode'>"
спасибо!