telnyx-messaging-hosted-go

📁 team-telnyx/telnyx-ext-agent-skills 📅 Today
3
总安装量
1
周安装量
#56799
全站排名
安装命令
npx skills add https://github.com/team-telnyx/telnyx-ext-agent-skills --skill telnyx-messaging-hosted-go

Agent 安装分布

windsurf 1
amp 1
opencode 1
cursor 1
kimi-cli 1
kiro-cli 1

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())
	}