IntegracjePython

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.

Gotowa integracja · v0.1.0

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.

01

Klient synchroniczny i asyncio

02

Typowane, niemutowalne modele odpowiedzi

03

SMS-y, wiadomości, kontakty i połączenia

04

Flow IVR i kolejka połączeń

05

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. 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. 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. 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. 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. 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. 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.

  1. 1list_sms_endpoints() pokazuje tylko bramki dozwolone dla klucza.
  2. 2Kontrolny SMS zwraca message_id, dispatch_id i status QUEUED.
  3. 3get_message() pokazuje chronologiczną historię dostarczenia.
  4. 4Ten sam kod przechodzi w kliencie synchronicznym i async bez ruchu do operatora w testach mock.
  5. 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.
Pobierz wydanie v0.1.0 Zobacz kod na GitHubiePotrzebujesz pomocy?