telnyx-messaging-hosted-go
npx skills add https://github.com/team-telnyx/telnyx-ext-agent-skills --skill telnyx-messaging-hosted-go
Agent 安装分布
Skill 文档
Telnyx Messaging Hosted – Go
Installation
go get github.com/team-telnyx/telnyx-go
Setup
import (
"context"
"fmt"
"os"
"github.com/team-telnyx/telnyx-go"
"github.com/team-telnyx/telnyx-go/option"
)
client := telnyx.NewClient(
option.WithAPIKey(os.Getenv("TELNYX_API_KEY")),
)
All examples below assume client is already initialized as shown above.
List messaging hosted number orders
GET /messaging_hosted_number_orders
page, err := client.MessagingHostedNumberOrders.List(context.TODO(), telnyx.MessagingHostedNumberOrderListParams{})
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", page)
Create a messaging hosted number order
POST /messaging_hosted_number_orders
Optional: messaging_profile_id (string), phone_numbers (array[string])
messagingHostedNumberOrder, err := client.MessagingHostedNumberOrders.New(context.TODO(), telnyx.MessagingHostedNumberOrderNewParams{})
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", messagingHostedNumberOrder.Data)
Retrieve a messaging hosted number order
GET /messaging_hosted_number_orders/{id}
messagingHostedNumberOrder, err := client.MessagingHostedNumberOrders.Get(context.TODO(), "id")
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", messagingHostedNumberOrder.Data)
Delete a messaging hosted number order
Delete a messaging hosted number order and all associated phone numbers.
DELETE /messaging_hosted_number_orders/{id}
messagingHostedNumberOrder, err := client.MessagingHostedNumberOrders.Delete(context.TODO(), "id")
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", messagingHostedNumberOrder.Data)
Upload hosted number document
POST /messaging_hosted_number_orders/{id}/actions/file_upload
response, err := client.MessagingHostedNumberOrders.Actions.UploadFile(
context.TODO(),
"id",
telnyx.MessagingHostedNumberOrderActionUploadFileParams{},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", response.Data)
Validate hosted number codes
Validate the verification codes sent to the numbers of the hosted order.
POST /messaging_hosted_number_orders/{id}/validation_codes â Required: verification_codes
response, err := client.MessagingHostedNumberOrders.ValidateCodes(
context.TODO(),
"id",
telnyx.MessagingHostedNumberOrderValidateCodesParams{
VerificationCodes: []telnyx.MessagingHostedNumberOrderValidateCodesParamsVerificationCode{{
Code: "code",
PhoneNumber: "phone_number",
}},
},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", response.Data)
Create hosted number verification codes
Create verification codes to validate numbers of the hosted order.
POST /messaging_hosted_number_orders/{id}/verification_codes â Required: phone_numbers, verification_method
response, err := client.MessagingHostedNumberOrders.NewVerificationCodes(
context.TODO(),
"id",
telnyx.MessagingHostedNumberOrderNewVerificationCodesParams{
PhoneNumbers: []string{"string"},
VerificationMethod: telnyx.MessagingHostedNumberOrderNewVerificationCodesParamsVerificationMethodSMS,
},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", response.Data)
Check hosted messaging eligibility
POST /messaging_hosted_number_orders/eligibility_numbers_check â Required: phone_numbers
response, err := client.MessagingHostedNumberOrders.CheckEligibility(context.TODO(), telnyx.MessagingHostedNumberOrderCheckEligibilityParams{
PhoneNumbers: []string{"string"},
})
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", response.PhoneNumbers)
Retrieve a messaging hosted number
Retrieve a specific messaging hosted number by its ID or phone number.
GET /messaging_hosted_numbers/{id}
messagingHostedNumber, err := client.MessagingHostedNumbers.Get(context.TODO(), "id")
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", messagingHostedNumber.Data)
Update a messaging hosted number
Update the messaging settings for a hosted number.
PATCH /messaging_hosted_numbers/{id}
Optional: messaging_product (string), messaging_profile_id (string), tags (array[string])
messagingHostedNumber, err := client.MessagingHostedNumbers.Update(
context.TODO(),
"id",
telnyx.MessagingHostedNumberUpdateParams{},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", messagingHostedNumber.Data)
Delete a messaging hosted number
DELETE /messaging_hosted_numbers/{id}
messagingHostedNumber, err := client.MessagingHostedNumbers.Delete(context.TODO(), "id")
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", messagingHostedNumber.Data)
Send an RCS message
POST /messages/rcs â Required: agent_id, to, messaging_profile_id, agent_message
Optional: mms_fallback (object), sms_fallback (object), type (enum), webhook_url (url)
response, err := client.Messages.Rcs.Send(context.TODO(), telnyx.MessageRcSendParams{
AgentID: "Agent007",
AgentMessage: telnyx.RcsAgentMessageParam{},
MessagingProfileID: "messaging_profile_id",
To: "+13125551234",
})
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", response.Data)
List all RCS agents
GET /messaging/rcs/agents
page, err := client.Messaging.Rcs.Agents.List(context.TODO(), telnyx.MessagingRcAgentListParams{})
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", page)
Retrieve an RCS agent
GET /messaging/rcs/agents/{id}
rcsAgentResponse, err := client.Messaging.Rcs.Agents.Get(context.TODO(), "id")
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", rcsAgentResponse.Data)
Modify an RCS agent
PATCH /messaging/rcs/agents/{id}
Optional: profile_id (uuid), webhook_failover_url (url), webhook_url (url)
rcsAgentResponse, err := client.Messaging.Rcs.Agents.Update(
context.TODO(),
"id",
telnyx.MessagingRcAgentUpdateParams{},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", rcsAgentResponse.Data)
Check RCS capabilities (batch)
POST /messaging/rcs/bulk_capabilities â Required: agent_id, phone_numbers
response, err := client.Messaging.Rcs.ListBulkCapabilities(context.TODO(), telnyx.MessagingRcListBulkCapabilitiesParams{
AgentID: "TestAgent",
PhoneNumbers: []string{"+13125551234"},
})
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", response.Data)
Check RCS capabilities
GET /messaging/rcs/capabilities/{agent_id}/{phone_number}
response, err := client.Messaging.Rcs.GetCapabilities(
context.TODO(),
"phone_number",
telnyx.MessagingRcGetCapabilitiesParams{
AgentID: "agent_id",
},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", response.Data)
Add RCS test number
Adds a test phone number to an RCS agent for testing purposes.
PUT /messaging/rcs/test_number_invite/{id}/{phone_number}
response, err := client.Messaging.Rcs.InviteTestNumber(
context.TODO(),
"phone_number",
telnyx.MessagingRcInviteTestNumberParams{
ID: "id",
},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", response.Data)
Generate RCS deeplink
Generate a deeplink URL that can be used to start an RCS conversation with a specific agent.
GET /messages/rcs_deeplinks/{agent_id}
response, err := client.Messages.Rcs.GenerateDeeplink(
context.TODO(),
"agent_id",
telnyx.MessageRcGenerateDeeplinkParams{},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", response.Data)
List Verification Requests
Get a list of previously-submitted tollfree verification requests
GET /messaging_tollfree/verification/requests
page, err := client.MessagingTollfree.Verification.Requests.List(context.TODO(), telnyx.MessagingTollfreeVerificationRequestListParams{
Page: 1,
PageSize: 1,
})
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", page)
Submit Verification Request
Submit a new tollfree verification request
POST /messaging_tollfree/verification/requests â Required: businessName, corporateWebsite, businessAddr1, businessCity, businessState, businessZip, businessContactFirstName, businessContactLastName, businessContactEmail, businessContactPhone, messageVolume, phoneNumbers, useCase, useCaseSummary, productionMessageContent, optInWorkflow, optInWorkflowImageURLs, additionalInformation
Optional: ageGatedContent (boolean), businessAddr2 (string), businessRegistrationCountry ([‘string’, ‘null’]), businessRegistrationNumber ([‘string’, ‘null’]), businessRegistrationType ([‘string’, ‘null’]), campaignVerifyAuthorizationToken ([‘string’, ‘null’]), doingBusinessAs ([‘string’, ‘null’]), entityType (object), helpMessageResponse ([‘string’, ‘null’]), isvReseller ([‘string’, ‘null’]), optInConfirmationResponse ([‘string’, ‘null’]), optInKeywords ([‘string’, ‘null’]), privacyPolicyURL ([‘string’, ‘null’]), termsAndConditionURL ([‘string’, ‘null’]), webhookUrl (string)
verificationRequestEgress, err := client.MessagingTollfree.Verification.Requests.New(context.TODO(), telnyx.MessagingTollfreeVerificationRequestNewParams{
TfVerificationRequest: telnyx.TfVerificationRequestParam{
AdditionalInformation: "additionalInformation",
BusinessAddr1: "600 Congress Avenue",
BusinessCity: "Austin",
BusinessContactEmail: "email@example.com",
BusinessContactFirstName: "John",
BusinessContactLastName: "Doe",
BusinessContactPhone: "+18005550100",
BusinessName: "Telnyx LLC",
BusinessState: "Texas",
BusinessZip: "78701",
CorporateWebsite: "http://example.com",
MessageVolume: telnyx.VolumeV100000,
OptInWorkflow: "User signs into the Telnyx portal, enters a number and is prompted to select whether they want to use 2FA verification for security purposes. If they've opted in a confirmation message is sent out to the handset",
OptInWorkflowImageURLs: []telnyx.URLParam{{
URL: "https://telnyx.com/sign-up",
}, {
URL: "https://telnyx.com/company/data-privacy",
}},
PhoneNumbers: []telnyx.TfPhoneNumberParam{{
PhoneNumber: "+18773554398",
}, {
PhoneNumber: "+18773554399",
}},
ProductionMessageContent: "Your Telnyx OTP is XXXX",
UseCase: telnyx.UseCaseCategoriesTwoFa,
UseCaseSummary: "This is a use case where Telnyx sends out 2FA codes to portal users to verify their identity in order to sign into the portal",
},
})
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", verificationRequestEgress.ID)
Get Verification Request
Get a single verification request by its ID.
GET /messaging_tollfree/verification/requests/{id}
verificationRequestStatus, err := client.MessagingTollfree.Verification.Requests.Get(context.TODO(), "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e")
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", verificationRequestStatus.ID)
Update Verification Request
Update an existing tollfree verification request.
PATCH /messaging_tollfree/verification/requests/{id} â Required: businessName, corporateWebsite, businessAddr1, businessCity, businessState, businessZip, businessContactFirstName, businessContactLastName, businessContactEmail, businessContactPhone, messageVolume, phoneNumbers, useCase, useCaseSummary, productionMessageContent, optInWorkflow, optInWorkflowImageURLs, additionalInformation
Optional: ageGatedContent (boolean), businessAddr2 (string), businessRegistrationCountry ([‘string’, ‘null’]), businessRegistrationNumber ([‘string’, ‘null’]), businessRegistrationType ([‘string’, ‘null’]), campaignVerifyAuthorizationToken ([‘string’, ‘null’]), doingBusinessAs ([‘string’, ‘null’]), entityType (object), helpMessageResponse ([‘string’, ‘null’]), isvReseller ([‘string’, ‘null’]), optInConfirmationResponse ([‘string’, ‘null’]), optInKeywords ([‘string’, ‘null’]), privacyPolicyURL ([‘string’, ‘null’]), termsAndConditionURL ([‘string’, ‘null’]), webhookUrl (string)
verificationRequestEgress, err := client.MessagingTollfree.Verification.Requests.Update(
context.TODO(),
"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
telnyx.MessagingTollfreeVerificationRequestUpdateParams{
TfVerificationRequest: telnyx.TfVerificationRequestParam{
AdditionalInformation: "additionalInformation",
BusinessAddr1: "600 Congress Avenue",
BusinessCity: "Austin",
BusinessContactEmail: "email@example.com",
BusinessContactFirstName: "John",
BusinessContactLastName: "Doe",
BusinessContactPhone: "+18005550100",
BusinessName: "Telnyx LLC",
BusinessState: "Texas",
BusinessZip: "78701",
CorporateWebsite: "http://example.com",
MessageVolume: telnyx.VolumeV100000,
OptInWorkflow: "User signs into the Telnyx portal, enters a number and is prompted to select whether they want to use 2FA verification for security purposes. If they've opted in a confirmation message is sent out to the handset",
OptInWorkflowImageURLs: []telnyx.URLParam{{
URL: "https://telnyx.com/sign-up",
}, {
URL: "https://telnyx.com/company/data-privacy",
}},
PhoneNumbers: []telnyx.TfPhoneNumberParam{{
PhoneNumber: "+18773554398",
}, {
PhoneNumber: "+18773554399",
}},
ProductionMessageContent: "Your Telnyx OTP is XXXX",
UseCase: telnyx.UseCaseCategoriesTwoFa,
UseCaseSummary: "This is a use case where Telnyx sends out 2FA codes to portal users to verify their identity in order to sign into the portal",
},
},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", verificationRequestEgress.ID)
Delete Verification Request
Delete a verification request
A request may only be deleted when when the request is in the “rejected” state.
DELETE /messaging_tollfree/verification/requests/{id}
err := client.MessagingTollfree.Verification.Requests.Delete(context.TODO(), "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e")
if err != nil {
panic(err.Error())
}