2016-06-07 13 views
2

Hallo Ich versuche, Push-Benachrichtigungen wie diesesenden Apple-Push-Benachrichtigung über AWS Lambda/Python als JSON mit benutzerdefinierten Variablen Nachricht

message3 = {"APNS_SANDBOX":"{\"aps\": {\"alert\": \"some alert\",\"sound\": \"default\",\"badge\": 1},\"message\": \"additional information\",\"id\": 1234}"} 

response = client.publish(
    #TopicArn='string', 
    TargetArn = someEndpoint, 
    Message = json.dumps(message3), 
    MessageStructure= 'json' 
    #Subject='string', 
) 

Alles funktioniert gut zu senden. Aber ich brauche die Warnung, um variabel zu sein. Wenn ich versuche, eine benutzerdefinierte Textvariable in dem message3 JSON-Objekt zu setzen, halte ich diesen Fehler:

"errorType": "ClientError", 
"errorMessage": "An error occurred (InvalidParameter) when calling the Publish operation: Invalid parameter: Message Reason: Invalid notification for protocol APNS_SANDBOX: Notification is malformed" 

Kann jemand helfen? Vielen Dank!!

+1

Wie haben Sie versucht, 'message3' anzupassen? Gibt es ein Beispiel, das Sie teilen können? – kichik

+0

Hallo, danke für die schnelle Antwort! Die Funktion wird durch ein dynamodb -Einfüge-Ereignis ausgelöst und ich erstelle eine String-Variable aus dem eingefügten Datensatz. aber selbst wenn Sie einfach eine einfache Variable wie sampleText = "test" verwenden und versuchen, "alert" mit sampleText in Nachricht 3 auszutauschen, bekomme ich den Fehler. – weka1

+1

Wie tauscht man den Text aus? Es klingt, als ob du '.replace()' oder einen regulären Ausdruck verwendest. Sie sollten die Nachricht als normales Python-Wörterbuch bearbeiten und dann als JSON zurückgeben und in "APNS_SANDBOX" einfügen. – kichik

Antwort

2

Es scheint so zu arbeiten.

test = "test" 
message = {'aps': {'alert': test, 'sound': 'default','badge': 1},'message': 'additional information','id': 1234} 
dumped = json.dumps(message) 

message3 = {"APNS_SANDBOX":dumped} 

response = client.publish(
    #TopicArn='string', 
    TargetArn = someEndpoint, 
    Message = json.dumps(message3), 
    MessageStructure= 'json' 
    #Subject='string', 
) 

Ist es das, was du meinst, @kichik? Danke vielmals!

+1

Ja, das habe ich gemeint. – kichik