| 1 | from paygent_sdk import Client |
| 2 | |
| 3 | from paygent_sdk.models import CustomerCreateOrGetRequest |
| 4 | |
| 5 | paygent = Client("your-paygent-api-key") |
| 6 | session_id = f"voice_call_{int(time.time() * 1000)}" |
| 7 | customer_id = "customer-123" |
| 8 | |
| 9 | # 1. Ensure Customer exists |
| 10 | paygent.create_or_get_customer(CustomerCreateOrGetRequest( |
| 11 | name="Customer Name", |
| 12 | external_id=customer_id |
| 13 | )) |
| 14 | |
| 15 | # 2. Initialize Voice Session |
| 16 | paygent.initialize_voice_session(session_id, "external-agent-id", customer_id) |
| 17 | |
| 18 | # 3. Handle Gemini Live turns |
| 19 | async def receive_audio(self): |
| 20 | while True: |
| 21 | if self.session is not None: |
| 22 | turn = self.session.receive() |
| 23 | async for response in turn: |
| 24 | if data := response.data: |
| 25 | # Handle incoming audio data |
| 26 | ... |
| 27 | |
| 28 | if usage := response.usage_metadata: |
| 29 | # Track usage directly from Gemini usage_metadata |
| 30 | paygent.track_google_sts( |
| 31 | usage_metadata=usage, |
| 32 | session_id=session_id, |
| 33 | model="gemini-2.0-flash-exp" |
| 34 | ) |
| 35 | |
| 36 | # 4. Cleanup / Finalize |
| 37 | paygent.set_voice_indicator(session_id, indicator_name, 1.5) |