bunq2ifttt
bunq2ifttt copied to clipboard
Callback exception trace, optional fields IFTTT, project status
Hi,
thanks for the great project. Also the documentation looks very, very good for a project this size.
I wonder if the project is still alive? I tried installing the project, but get some exceptions on callbacks:
2022-08-18 09:42:41 default[redacted] [bunqcb_mutation] input: {"NotificationUrl": {"target_url": "https://redacted.appspot.com//bunq2ifttt_mutation", "category": "MUTATION", "event_type": "MUTATION_RECEIVED", "object": {"Payment": {"id": 123456, "created": "2022-08-18 09:42:41.119373", "updated": "2022-08-18 09:42:41.119373", "monetary_account_id": 12345, "amount": {"currency": "EUR", "value": "0.01"}, "description": "", "type": "BUNQ", "merchant_reference": null, "alias": {"iban": "DE123456789000", "is_light": false, "display_name": "Forename", "avatar": {"uuid": "redacted", "image": [{"attachment_public_uuid": "redacted", "height": 1024, "width": 1024, "content_type": "image/jpeg", "urls": [{"type": "ORIGINAL", "url": "https://bunq-prod-model-storage-public.s3.eu-central-1.amazonaws.com/bunq_file/File/content/redacted.jpg"}]}], "anchor_uuid": null, "style": "NONE"}, "label_user": {"uuid": "redacted", "display_name": "Forename", "country": "DE", "avatar": {"uuid": "redacted", "image": [{"attachment_public_uuid": "redacted", "height": 389, "width": 389, "content_type": "image/jpeg", "urls": [{"type": "ORIGINAL", "url": "https://bunq-prod-model-storage-public.s3.eu-central-1.amazonaws.com/redacted.jpg"}]}], "anchor_uuid": "redacted", "style": "NONE"}, "public_nick_name": "Forename", "type": "PERSON"}, "country": "DE"}, "counterparty_alias": {"iban": "DE123456790000", "is_light": false, "display_name": "Forename Lastname", "avatar": {"uuid": "redacted", "image": [{"attachment_public_uuid": "redacted", "height": 1024, "width": 1024, "content_type": "image/jpeg", "urls": [{"type": "ORIGINAL", "url": "https://bunq-prod-model-storage-public.s3.eu-central-1.amazonaws.com/bunq_file/File/content/redacted.jpg"}]}], "anchor_uuid": null, "style": "NONE"}, "label_user": {"uuid": "redacted", "display_name": "Forename Lastname", "country": "DE", "avatar": {"uuid": "redacted", "image": [{"attachment_public_uuid": "redacted", "height": 389, "width": 389, "content_type": "image/jpeg", "urls": [{"type": "ORIGINAL", "url": "https://bunq-prod-model-storage-public.s3.eu-central-1.amazonaws.com/bunq_file%2FFile%2Fcontent%redacted.jpg"}]}], "anchor_uuid": "Redacted", "style": "NONE"}, "public_nick_name": "Forename", "type": "PERSON"}, "country": "DE"}, "attachment": [], "geolocation": null, "batch_id": null, "scheduled_id": null, "address_billing": null, "address_shipping": null, "sub_type": "PAYMENT", "request_reference_split_the_bill": [], "balance_after_mutation": {"currency": "EUR", "value": "1.01"}, "payment_auto_allocate_instance": null}}}}
2022-08-18 09:42:41 default[redacted] Traceback (most recent call last): File "/srv/event.py", line 136, in bunq_callback_mutation print("[bunqcb_mutation] translated: {}".format(json.dumps(item))) File "/opt/python3.7/lib/python3.7/json/__init__.py", line 231, in dumps return _default_encoder.encode(obj) File "/opt/python3.7/lib/python3.7/json/encoder.py", line 199, in encode chunks = self.iterencode(o, _one_shot=True) File "/opt/python3.7/lib/python3.7/json/encoder.py", line 257, in iterencode return _iterencode(o, 0) File "/opt/python3.7/lib/python3.7/json/encoder.py", line 179, in default raise TypeError(f'Object of type {o.__class__.__name__} ' TypeError: Object of type method is not JSON serializable
Furthermore, with the mutation triggers, I get errors in IFTTT if i do not provide every parameter. I double checked the documentation looking for a way to define optional parameters. But according to documentation, a mutation trigger with ANY/ANY is possible without defining the remaining.
Is anybody currently using the project with success?
Thank you very much.
Ok at least I got the callback stuff working by calling the arrow.timestamp as method in event.py and not passing the method itself to json.dumps. Not sure why this worked in the first place for anyone.
diff --git a/app/event.py b/app/event.py
index 506708f..a6f264b 100644
--- a/app/event.py
+++ b/app/event.py
@@ -59,7 +59,7 @@ def bunq_callback_request():
"request_id": metaid,
"meta": {
"id": metaid,
- "timestamp": arrow.get(obj["created"]).timestamp
+ "timestamp": arrow.get(obj["created"]).timestamp()
}
}
@@ -129,7 +129,7 @@ def bunq_callback_mutation():
"payment_id": metaid,
"meta": {
"id": metaid,
- "timestamp": arrow.get(payment["created"]).timestamp
+ "timestamp": arrow.get(payment["created"]).timestamp()
}
}
arrow had some breaking changes with 1.0, so timestamp property is now called int_timestamp and the timestamp method matches behavior of datetime. So it should probably changed to int_timestamp.
See https://github.com/arrow-py/arrow/issues/832
diff --git a/app/event.py b/app/event.py
index 506708f..a6f264b 100644
--- a/app/event.py
+++ b/app/event.py
@@ -59,7 +59,7 @@ def bunq_callback_request():
"request_id": metaid,
"meta": {
"id": metaid,
- "timestamp": arrow.get(obj["created"]).timestamp
+ "timestamp": arrow.get(obj["created"]).int_timestamp
}
}
@@ -129,7 +129,7 @@ def bunq_callback_mutation():
"payment_id": metaid,
"meta": {
"id": metaid,
- "timestamp": arrow.get(payment["created"]).timestamp
+ "timestamp": arrow.get(payment["created"]).int_timestamp
}
}
Maybe pinning the packages version is a good idea. I will do some PRs if I find some free time :).
Okay I found a workaround for the missing fields error. Creating the applet with the iOS app works without any problems.
It seems to be a bug of IFTTT web interface, the request payload to https://ifttt.com/api/v3/graph it is randomly missing field parameters. Tested it with different browsers and addons disabled.