PushBullet SMS из скрипта Google Apps в формате JSON
Я пытаюсь отправить SMS со своего мобильного телефона с помощью API PushBullet из скрипта Google Apps Calc.
Сценарий (данные отредактированы)
function send_SMS() {
Logger.log("send_SMS start");
var options = {
"method" : "post",
"Content-Type" : "application/json",
"headers" : { "Authorization": "Basic aaaaaaaaaaaaaaaaaa" },
"payload" : {
"push" : {
"type" : "messaging_extension_reply",
"package_name" : "com.pushbullet.android",
"source_user_iden" : "iiiiiiiiiiiii",
"target_device_iden" : "iiiiiiiiiiiiiiidddddddddd",
"conversation_iden" : "0999999999",
"message" : "TestSMS" },
"type" : "push"
}
};
var push_bullet_url = "https://api.pushbullet.com/v2/ephemerals";
Logger.log(options);
UrlFetchApp.fetch(push_bullet_url, options);
return;
}
Кажется, я получаю какую-то ошибку упаковки JSON, когда получаю 400. "Не удалось проанализировать тело JSON".
Документация находится по https://docs.pushbullet.com/.
Я попробовал CURL в Windows, и команда работает без проблем (одна, которую я сделал "" ", избегая)
curl --header "Access-Token: ttttttttttttttt" --header "Content-Type: application/json" --data-binary "{ """push""": { """type""": """messaging_extension_reply""", """package_name""": """com.pushbullet.android""", """source_user_iden""": """iiiiiiiiiiiiiiii""", """target_device_iden""": """iiiiiiiiiiiiiiiiiddddddddddddd""", """conversation_iden""": """0999999999""", """message""": """TestSMS""" }, """type""": """push"""}" --request POST https://api.pushbullet.com/v2/ephemerals
Я успешно написал сценарии Google Apps, чтобы получить user_ident, device_ident и отправить тестовое сообщение с заметкой. Я думаю, что проблема может быть из-за правильного форматирования строковых кавычек в полезной нагрузке JSON в скрипте.
1 ответ
В конце ответ был прост!
Часть полезной нагрузки параметров JSON должна быть строкой. Вы можете сделать это (по крайней мере) двумя способами:
Вы можете зачеркнуть:
var options = {
"method" : "post",
"headers" : { "Authorization": "Basic "+Utilities.base64Encode(PushToken+":"); },
"payload" : JSON.stringify({
"push" : {
"type" : "messaging_extension_reply",
"package_name" : "com.pushbullet.android",
"source_user_iden" : "iiiiiii",
"target_device_iden" : "iiiiiiiidddddd",
"conversation_iden" : "0999999999",
"message" : "Test SMS" },
"type" : "push" } )
Или вы можете написать полезную нагрузку в виде строки, но она должна быть в одну строку
"payload" : '{ "push" : { "type" : "messaging_extension_reply", "package_name" : "com.pushbullet.android", "source_user_iden" : "iiiiii", "target_device_iden" : "iiiiiiiidddddd", "conversation_iden" : "099999999", "message" : "Test SMS" }, "type" : "push" }'
Самое главное, вы можете отлаживать с помощью службы, такой как http://httpresponder.com/ чтобы увидеть отправляемый вами запрос и правильно ли сформирован ваш JSON.