Klient synchroniczny i asyncio
Aplikacje Python · v0.1.0
Simply Connect
dla Pythona.
Jedna paczka dla całego ekosystemu Python: SMS-y, historia, kontakty, połączenia i kolejka IVR bez własnoręcznego składania żądań HTTP.
Dla kogo jest ta integracja
Najpierw sprawdź, czy to rozwiązanie dla Ciebie.
Dla zespołów budujących backendy, workery i automatyzacje w Pythonie, Django, Flasku albo FastAPI, które chcą bezpiecznie korzystać z bramek Simply Connect.
Co dostajesz
Mniej ręcznej pracy.
Więcej pewności.
Typowane, niemutowalne modele odpowiedzi
SMS-y, wiadomości, kontakty i połączenia
Flow IVR i kolejka połączeń
Jawne błędy, correlation ID i bezpieczne UNKNOWN
Instalacja krok po kroku
Bez zgadywania. Zrobisz to po kolei.
Każdy krok mówi, gdzie wejść i czego oczekiwać. Najpierw uruchom podstawową wysyłkę, dopiero potem włącz kolejne automatyzacje.
- 1
Zainstaluj niezmienny wheel
Pierwsze wydanie instalujesz bezpośrednio z GitHub Release. Ta sama paczka działa w zwykłym skrypcie, Django, Flasku i FastAPI.
python -m pip install \ https://github.com/karlos1998/simply-connect-python/releases/download/v0.1.0/simply_connect-0.1.0-py3-none-any.whl - 2
Utwórz klucz API
W panelu Simply Connect otwórz Developer → API keys. Do wysyłki potrzebujesz SMS_SEND i ENDPOINTS_READ; odczyt historii, kontaktów lub połączeń wymaga osobnych zakresów.
Otwórz panel Simply Connect - 3
Dodaj sekrety do środowiska
Klucz oraz UUID dozwolonej bramki trzymaj poza repozytorium. Id bramki znajdziesz przy kluczu API albo pobierzesz metodą list_sms_endpoints().
SIMPLY_CONNECT_API_KEY=msc_live_twoj_sekret SIMPLY_CONNECT_SMS_ENDPOINT_ID=uuid_twojej_bramki - 4
Wyślij pierwszy SMS
Utwórz klienta raz i używaj go ponownie. Przekaż stabilny biznesowy klucz idempotencji, aby ewentualne ponowienie nie wysłało drugiej wiadomości.
with SimplyConnectClient( os.environ['SIMPLY_CONNECT_API_KEY'], default_sms_endpoint_id=os.environ['SIMPLY_CONNECT_SMS_ENDPOINT_ID'], ) as client: result = client.send_sms( '+48500100200', 'Zamówienie jest gotowe.', idempotency_key='order-1842-ready', ) - 5
W FastAPI wybierz klienta async
AsyncSimplyConnectClient ma ten sam model danych i nie blokuje pętli asyncio. Utwórz jedną instancję na proces i zamknij ją w lifespan aplikacji.
client = AsyncSimplyConnectClient( os.environ['SIMPLY_CONNECT_API_KEY'], default_sms_endpoint_id=os.environ['SIMPLY_CONNECT_SMS_ENDPOINT_ID'], ) result = await client.send_sms( '+48500100200', 'Zamówienie jest gotowe.', idempotency_key='order-1842-ready', ) - 6
Obsłuż niejednoznaczny wynik
SDK nie ponawia automatycznie operacji zmieniających stan. Jeśli połączenie urwie się po wysyłce, UnknownOutcomeError zawiera dokładny retry_key, którego wolno użyć ponownie.
except UnknownOutcomeError as error: logger.warning( 'Sprawdź stan i ponów wyłącznie z kluczem %s', error.retry_key, )
Test po instalacji
Po czym poznasz, że wszystko działa?
Nie zaczynaj od masowej wysyłki. Przejdź tę krótką listę na jednym kontrolowanym numerze.
- 1list_sms_endpoints() pokazuje tylko bramki dozwolone dla klucza.
- 2Kontrolny SMS zwraca message_id, dispatch_id i status QUEUED.
- 3get_message() pokazuje chronologiczną historię dostarczenia.
- 4Ten sam kod przechodzi w kliencie synchronicznym i async bez ruchu do operatora w testach mock.
- 5Klucz API pozostaje wyłącznie po stronie serwera i nie trafia do logów ani HTML.
Gdy coś nie ruszy
Najczęstsze problemy
Najpierw sprawdź poniższe rzeczy — zwykle rozwiązanie jest tutaj.
Dostaję błąd 401 albo 403
Sprawdź ważność klucza, wymagany zakres i dostęp do wybranej bramki. AuthenticationError i AuthorizationError zawierają correlation_id przydatny w diagnostyce.
Filtr czasu zgłasza błąd konfiguracji
Daty w filtrach muszą mieć strefę, np. datetime.now(UTC). scheduled_for w kolejce połączeń jest wyjątkiem: to lokalny czas bez offsetu interpretowany w podanym time_zone.
Czy potrzebuję osobnej paczki dla Django lub FastAPI?
Nie. W Django użyj SimplyConnectClient, a w FastAPI zwykle AsyncSimplyConnectClient. Framework odpowiada tylko za cykl życia jednej instancji klienta.
Wysyłka zakończyła się jako UNKNOWN
Nie twórz nowego SMS-a w ciemno. Sprawdź stan wiadomości i ponów wyłącznie z retry_key z wyjątku UnknownOutcomeError. Nowy klucz mógłby wysłać duplikat.
Gotowe do uruchomienia
Połącz Pythona z własnym numerem.
Integracja jest otwarta i wersjonowana. Kod możesz sprawdzić przed instalacją, a w razie pytania napisać do nas.
Nazwy i znaki należą do ich właścicieli. Integracja nie oznacza partnerstwa ani certyfikacji przez właściciela danego narzędzia.