Skip to content

Commit

Permalink
update applications snippets, add users snippets
Browse files Browse the repository at this point in the history
  • Loading branch information
maxkahan committed Oct 25, 2024
1 parent 6dc4c64 commit 9c8cad9
Show file tree
Hide file tree
Showing 12 changed files with 264 additions and 96 deletions.
9 changes: 8 additions & 1 deletion .env.dist
Original file line number Diff line number Diff line change
Expand Up @@ -76,4 +76,11 @@ VONAGE_NUMBER_FEATURES='SMS,VOICE'
MESSAGES_APPLICATION_ID='12a3b4cd-a1b2-1ab2-a1b2-a1234bc5d678'
VOICE_CALLBACK_TYPE='tel'
VOICE_CALLBACK_VALUE='447700900002'
VOICE_STATUS_URL='https://example.com/webhooks/status'
VOICE_STATUS_URL='https://example.com/webhooks/status'

# Users
USER_NAME='USER_NAME'
USER_DISPLAY_NAME='USER_DISPLAY_NAME'
USER_NEW_NAME='USER_NEW_NAME'
USER_NEW_DISPLAY_NAME='USER_NEW_DISPLAY_NAME'
USER_ID='USER_ID'
1 change: 0 additions & 1 deletion account/configure-account.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import os
from os.path import join, dirname
from pprint import pprint
from dotenv import load_dotenv

dotenv_path = join(dirname(__file__), '../.env')
Expand Down
103 changes: 78 additions & 25 deletions application/create-application.py
Original file line number Diff line number Diff line change
@@ -1,38 +1,91 @@
#!/usr/bin/env python3
from pprint import pprint
import os
from os.path import join, dirname
from dotenv import load_dotenv
import vonage


dotenv_path = join(dirname(__file__), "../.env")
load_dotenv(dotenv_path)

VONAGE_API_KEY = os.getenv('VONAGE_API_KEY')
VONAGE_API_SECRET = os.getenv('VONAGE_API_SECRET')

client = vonage.Client(
key=VONAGE_API_KEY,
secret=VONAGE_API_SECRET
from vonage import Auth, Vonage
from vonage_application import (
ApplicationConfig,
ApplicationData,
ApplicationUrl,
Capabilities,
Messages,
MessagesWebhooks,
Region,
Verify,
VerifyWebhooks,
Voice,
VoiceUrl,
VoiceWebhooks,
)

client = Vonage(Auth(api_key=VONAGE_API_KEY, api_secret=VONAGE_API_SECRET))

# Voice application options
voice = Voice(
webhooks=VoiceWebhooks(
answer_url=VoiceUrl(
address='https://example.com/answer',
http_method='POST',
connect_timeout=500,
socket_timeout=3000,
),
fallback_answer_url=VoiceUrl(
address='https://example.com/fallback',
http_method='POST',
connect_timeout=500,
socket_timeout=3000,
),
event_url=VoiceUrl(
address='https://example.com/event',
http_method='POST',
connect_timeout=500,
socket_timeout=3000,
),
),
signed_callbacks=True,
conversations_ttl=8000,
leg_persistence_time=14,
region=Region.NA_EAST,
)

# Messages application options
messages = Messages(
version='v1',
webhooks=MessagesWebhooks(
inbound_url=ApplicationUrl(
address='https://example.com/inbound', http_method='POST'
),
status_url=ApplicationUrl(
address='https://example.com/status', http_method='POST'
),
),
authenticate_inbound_media=True,
)

response = client.application.create_application({
"name": "Code Example App",
"capabilities": {
"messages": {
"webhooks": {
"inbound_url": {
"address": "https://example.com/webhooks/inbound",
"http_method": "POST"
},
"status_url": {
"address": "https://example.com/webhooks/status",
"http_method": "POST"
}
}
}
}
})

pprint(response)
# Verify application options
verify = Verify(
webhooks=VerifyWebhooks(
status_url=ApplicationUrl(address='https://example.com/status', http_method='GET')
),
)

# Set the application capabilities
capabilities = Capabilities(voice=voice, messages=messages, verify=verify)

# Set the application configuration that will be applied
params = ApplicationConfig(
name='My Custom Application',
capabilities=capabilities,
)

# Call the API
response: ApplicationData = client.application.create_application(params)

print(response)
11 changes: 3 additions & 8 deletions application/delete-application.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
#!/usr/bin/env python3
import os
from os.path import join, dirname
from pprint import pprint
from dotenv import load_dotenv
import vonage

dotenv_path = join(dirname(__file__), "../.env")
load_dotenv(dotenv_path)
Expand All @@ -12,11 +10,8 @@
VONAGE_API_SECRET = os.getenv('VONAGE_API_SECRET')
VONAGE_APPLICATION_ID = os.getenv('VONAGE_APPLICATION_ID')

client = vonage.Client(
key=VONAGE_API_KEY,
secret=VONAGE_API_SECRET
)
from vonage import Auth, Vonage

response = client.application.delete_application(VONAGE_APPLICATION_ID)
client = Vonage(Auth(api_key=VONAGE_API_KEY, api_secret=VONAGE_API_SECRET))

pprint(response)
client.application.delete_application(VONAGE_APPLICATION_ID)
15 changes: 7 additions & 8 deletions application/get-application.py
Original file line number Diff line number Diff line change
@@ -1,21 +1,20 @@
#!/usr/bin/env python3
import os
from os.path import join, dirname
from pprint import pprint
from dotenv import load_dotenv
import vonage

dotenv_path = join(dirname(__file__), "../.env")
load_dotenv(dotenv_path)

VONAGE_API_KEY = os.getenv('VONAGE_API_KEY')
VONAGE_API_SECRET = os.getenv('VONAGE_API_SECRET')
VONAGE_APPLICATION_ID = os.getenv('VONAGE_APPLICATION_ID')
client = vonage.Client(
key=VONAGE_API_KEY,
secret=VONAGE_API_SECRET
)

response = client.application.get_application(VONAGE_APPLICATION_ID)
from vonage import Auth, Vonage
from vonage_application import ApplicationData

pprint(response)
client = Vonage(Auth(api_key=VONAGE_API_KEY, api_secret=VONAGE_API_SECRET))

response: ApplicationData = client.application.get_application(VONAGE_APPLICATION_ID)

print(response)
17 changes: 8 additions & 9 deletions application/list-applications.py
Original file line number Diff line number Diff line change
@@ -1,22 +1,21 @@
#!/usr/bin/env python3
import os
from os.path import join, dirname
from pprint import pprint
from dotenv import load_dotenv
import vonage


dotenv_path = join(dirname(__file__), "../.env")
load_dotenv(dotenv_path)

VONAGE_API_KEY = os.getenv('VONAGE_API_KEY')
VONAGE_API_SECRET = os.getenv('VONAGE_API_SECRET')

client = vonage.Client(
key=VONAGE_API_KEY,
secret=VONAGE_API_SECRET
)
from vonage import Auth, Vonage
from vonage_application import ListApplicationsFilter

response = client.application.list_applications()
client = Vonage(Auth(api_key=VONAGE_API_KEY, api_secret=VONAGE_API_SECRET))

applications, next_page = client.application.list_applications(
filter=ListApplicationsFilter(page_size=10, page=1)
)

pprint(response)
print(f'Applications:\n{applications}, \nNext page: {next_page}')
71 changes: 27 additions & 44 deletions application/update-application.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
#!/usr/bin/env python3
import os
from os.path import join, dirname
from pprint import pprint
from dotenv import load_dotenv
import vonage

dotenv_path = join(dirname(__file__), "../.env")
load_dotenv(dotenv_path)
Expand All @@ -12,48 +10,33 @@
VONAGE_API_SECRET = os.getenv('VONAGE_API_SECRET')
VONAGE_APPLICATION_ID = os.getenv('VONAGE_APPLICATION_ID')

client = vonage.Client(
key=VONAGE_API_KEY,
secret=VONAGE_API_SECRET
from vonage import Auth, Vonage
from vonage_application import (
ApplicationConfig,
ApplicationData,
ApplicationUrl,
Messages,
MessagesWebhooks,
)

response = client.application.update_application(VONAGE_APPLICATION_ID, {
"name": "Python Update App",
"capabilities": {
"messages": {
"webhooks": {
"inbound_url": {
"address": "https://example.com/webhooks/inbound",
"http_method": "POST"
},
"status_url": {
"address": "https://example.com/webhooks/status",
"http_method": "POST"
}
}
},
"voice": {
"webhooks": {
"answer_url": {
"address": "https://example.com/webhooks/answer",
"http_method": "POST"
},
"event_url": {
"address": "https://example.com/webhooks/event",
"http_method": "POST"
}
}
},
"rtc": {
"webhooks": {
"event_url": {
"address": "https://example.com/webhooks/event",
"http_method": "POST"
}
}
},
"vbc": {}
}
})
client = Vonage(Auth(api_key=VONAGE_API_KEY, api_secret=VONAGE_API_SECRET))

pprint(response)
config = ApplicationConfig(
name='My Renamed Application',
capabilities=Messages(
webhooks=MessagesWebhooks(
inbound_url=ApplicationUrl(
address='https://example.com/inbound_new_url', http_method='GET'
),
status_url=ApplicationUrl(
address='https://example.com/status_new_url', http_method='GET'
),
),
authenticate_inbound_media=False,
),
)
response: ApplicationData = client.application.update_application(
id=VONAGE_APPLICATION_ID, config=config
)

print(response)
31 changes: 31 additions & 0 deletions users/create-user.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
import os
from os.path import join, dirname
from dotenv import load_dotenv

# Load the environment
envpath = join(dirname(__file__), "../.env")
load_dotenv(envpath)

VONAGE_APPLICATION_ID = os.getenv('VONAGE_APPLICATION_ID')
VONAGE_APPLICATION_PRIVATE_KEY_PATH = os.getenv('VONAGE_APPLICATION_PRIVATE_KEY_PATH')
USER_NAME = os.getenv('USER_NAME')
USER_DISPLAY_NAME = os.getenv('USER_DISPLAY_NAME')

from vonage import Auth, Vonage
from vonage_users import Channels, PstnChannel, User

client = Vonage(
Auth(
application_id=VONAGE_APPLICATION_ID,
private_key=VONAGE_APPLICATION_PRIVATE_KEY_PATH,
)
)

user_options = User(
name=USER_NAME,
display_name=USER_DISPLAY_NAME,
channels=Channels(pstn=[PstnChannel(number=123456)]),
)
user = client.users.create_user(user_options)

print(user)
21 changes: 21 additions & 0 deletions users/delete-user.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import os
from os.path import join, dirname
from dotenv import load_dotenv

# Load the environment
envpath = join(dirname(__file__), "../.env")
load_dotenv(envpath)

VONAGE_APPLICATION_ID = os.getenv('VONAGE_APPLICATION_ID')
VONAGE_APPLICATION_PRIVATE_KEY_PATH = os.getenv('VONAGE_APPLICATION_PRIVATE_KEY_PATH')
USER_ID = os.getenv('USER_ID')

from vonage import Auth, Vonage

client = Vonage(
Auth(
application_id=VONAGE_APPLICATION_ID,
private_key=VONAGE_APPLICATION_PRIVATE_KEY_PATH,
)
)
client.users.delete_user(USER_ID)
24 changes: 24 additions & 0 deletions users/get-user.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import os
from os.path import join, dirname
from dotenv import load_dotenv

# Load the environment
envpath = join(dirname(__file__), "../.env")
load_dotenv(envpath)

VONAGE_APPLICATION_ID = os.getenv('VONAGE_APPLICATION_ID')
VONAGE_APPLICATION_PRIVATE_KEY_PATH = os.getenv('VONAGE_APPLICATION_PRIVATE_KEY_PATH')
USER_ID = os.getenv('USER_ID')

from vonage import Auth, Vonage
from vonage_users import User

client = Vonage(
Auth(
application_id=VONAGE_APPLICATION_ID,
private_key=VONAGE_APPLICATION_PRIVATE_KEY_PATH,
)
)
user: User = client.users.get_user(USER_ID)

print(user)
Loading

0 comments on commit 9c8cad9

Please sign in to comment.