add /phone/provider2/sms
This commit is contained in:
parent
b505ceebe9
commit
4976f48944
|
@ -1 +1,7 @@
|
|||
from .views import index, phone_reservation, twilio_callback, provider1_callback
|
||||
from .views import (
|
||||
index,
|
||||
phone_reservation,
|
||||
twilio_callback,
|
||||
provider1_callback,
|
||||
provider2_callback,
|
||||
)
|
||||
|
|
60
app/phone/views/provider2_callback.py
Normal file
60
app/phone/views/provider2_callback.py
Normal file
|
@ -0,0 +1,60 @@
|
|||
import jwt
|
||||
from flask import request
|
||||
from jwt import InvalidSignatureError, DecodeError
|
||||
|
||||
from app.config import (
|
||||
PHONE_PROVIDER_2_HEADER,
|
||||
PHONE_PROVIDER_2_SECRET,
|
||||
)
|
||||
from app.log import LOG
|
||||
from app.models import PhoneNumber, PhoneMessage
|
||||
from app.phone.base import phone_bp
|
||||
|
||||
|
||||
@phone_bp.route("/provider2/sms", methods=["GET", "POST"])
|
||||
def provider2_sms():
|
||||
encoded = request.headers.get(PHONE_PROVIDER_2_HEADER)
|
||||
try:
|
||||
jwt.decode(encoded, key=PHONE_PROVIDER_2_SECRET, algorithms="HS256")
|
||||
except (InvalidSignatureError, DecodeError):
|
||||
LOG.e(
|
||||
"Unauthenticated callback %s %s %s %s",
|
||||
request.headers,
|
||||
request.method,
|
||||
request.args,
|
||||
request.json,
|
||||
)
|
||||
return "not ok", 400
|
||||
|
||||
# request.json should be a dict where
|
||||
# msisdn is the sender
|
||||
# receiver is the receiver
|
||||
# For ex:
|
||||
# {'id': 2042489247, 'msisdn': 33612345678, 'country_code': 'FR', 'country_prefix': 33, 'receiver': 33687654321,
|
||||
# 'message': 'Test 1', 'senttime': 1641401781, 'webhook_label': 'Hagekar', 'sender': None,
|
||||
# 'mcc': None, 'mnc': None, 'validity_period': None, 'encoding': 'UTF8', 'udh': None, 'payload': None}
|
||||
|
||||
to_number: str = str(request.json.get("receiver"))
|
||||
if not to_number.startswith("+"):
|
||||
to_number = "+" + to_number
|
||||
|
||||
from_number = str(request.json.get("msisdn"))
|
||||
if not from_number.startswith("+"):
|
||||
from_number = "+" + from_number
|
||||
|
||||
body = request.json.get("message")
|
||||
|
||||
LOG.d("%s->%s:%s", from_number, to_number, body)
|
||||
|
||||
phone_number = PhoneNumber.get_by(number=to_number)
|
||||
if phone_number:
|
||||
PhoneMessage.create(
|
||||
number_id=phone_number.id,
|
||||
from_number=from_number,
|
||||
body=body,
|
||||
commit=True,
|
||||
)
|
||||
else:
|
||||
LOG.e("Unknown phone number %s %s", to_number, request.json)
|
||||
return "not ok", 200
|
||||
return "ok", 200
|
Loading…
Reference in a new issue