Class: Pinnacle::AsyncClient

Inherits:
Object
  • Object
show all
Defined in:
lib/rcs.rb

Instance Method Summary collapse

Constructor Details

#initialize(api_key:, base_url: nil, environment: Pinnacle::Environment::DEFAULT, max_retries: nil, timeout_in_seconds: nil) ⇒ Pinnacle::AsyncClient

Parameters:

  • base_url (String) (defaults to: nil)
  • environment (Pinnacle::Environment) (defaults to: Pinnacle::Environment::DEFAULT)
  • max_retries (Long) (defaults to: nil)

    The number of times to retry a failed request, defaults to 2.

  • timeout_in_seconds (Long) (defaults to: nil)
  • api_key (String)


356
357
358
359
360
361
362
363
364
365
# File 'lib/rcs.rb', line 356

def initialize(api_key:, base_url: nil, environment: Pinnacle::Environment::DEFAULT, max_retries: nil,
               timeout_in_seconds: nil)
  @async_request_client = Pinnacle::AsyncRequestClient.new(
    base_url: base_url,
    environment: environment,
    max_retries: max_retries,
    timeout_in_seconds: timeout_in_seconds,
    api_key: api_key
  )
end

Instance Method Details

#check_rcs_capability(phone_number:, request_options: nil) ⇒ Pinnacle::CheckRcsCapabilityResponse

Checks if a phone number is able to receive RCS

Examples:

api = Pinnacle::Client.new(
  base_url: "https://api.example.com",
  environment: Pinnacle::Environment::DEFAULT,
  api_key: "YOUR_API_KEY"
)
api.check_rcs_capability(phone_number: "phone_number")

Parameters:

  • phone_number (String)

    Phone number (E.164 format: [+][country code][subscriber number including area code]) to check for RCS capability. Example: +1234567890

  • request_options (Pinnacle::RequestOptions) (defaults to: nil)

Returns:



380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
# File 'lib/rcs.rb', line 380

def check_rcs_capability(phone_number:, request_options: nil)
  response = @async_request_client.conn.get do |req|
    req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
    req.headers["PINNACLE-API-Key"] = request_options.api_key unless request_options&.api_key.nil?
    req.headers = {
  **(req.headers || {}),
  **@async_request_client.get_headers,
  **(request_options&.additional_headers || {})
    }.compact
    req.params = { **(request_options&.additional_query_parameters || {}), "phone_number": phone_number }.compact
    unless request_options.nil? || request_options&.additional_body_parameters.nil?
      req.body = { **(request_options&.additional_body_parameters || {}) }.compact
    end
    req.url "#{@async_request_client.get_url(request_options: request_options)}/check_rcs"
  end
  Pinnacle::CheckRcsCapabilityResponse.from_json(json_object: response.body)
end

#get_account_number(request_options: nil) ⇒ Pinnacle::GetAccountNumberResponse

Retrieve the phone number associated with the account.

Examples:

api = Pinnacle::Client.new(
  base_url: "https://api.example.com",
  environment: Pinnacle::Environment::DEFAULT,
  api_key: "YOUR_API_KEY"
)
api.

Parameters:

Returns:



439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
# File 'lib/rcs.rb', line 439

def (request_options: nil)
  response = @async_request_client.conn.get do |req|
    req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
    req.headers["PINNACLE-API-Key"] = request_options.api_key unless request_options&.api_key.nil?
    req.headers = {
  **(req.headers || {}),
  **@async_request_client.get_headers,
  **(request_options&.additional_headers || {})
    }.compact
    unless request_options.nil? || request_options&.additional_query_parameters.nil?
      req.params = { **(request_options&.additional_query_parameters || {}) }.compact
    end
    unless request_options.nil? || request_options&.additional_body_parameters.nil?
      req.body = { **(request_options&.additional_body_parameters || {}) }.compact
    end
    req.url "#{@async_request_client.get_url(request_options: request_options)}/get_account_number"
  end
  Pinnacle::GetAccountNumberResponse.from_json(json_object: response.body)
end

#get_company(company_id: nil, company_name: nil, request_options: nil) ⇒ Array<Pinnacle::Company>

Retrieve the company’s information (i.e. approval status, company name, etc.).

Search by company ID or company name.

Examples:

api = Pinnacle::Client.new(
  base_url: "https://api.example.com",
  environment: Pinnacle::Environment::DEFAULT,
  api_key: "YOUR_API_KEY"
)
api.get_company

Parameters:

  • company_id (Integer) (defaults to: nil)

    The unique identifier for the company

  • company_name (String) (defaults to: nil)

    The name of the company

  • request_options (Pinnacle::RequestOptions) (defaults to: nil)

Returns:



503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
# File 'lib/rcs.rb', line 503

def get_company(company_id: nil, company_name: nil, request_options: nil)
  response = @async_request_client.conn.get do |req|
    req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
    req.headers["PINNACLE-API-Key"] = request_options.api_key unless request_options&.api_key.nil?
    req.headers = {
  **(req.headers || {}),
  **@async_request_client.get_headers,
  **(request_options&.additional_headers || {})
    }.compact
    req.params = {
      **(request_options&.additional_query_parameters || {}),
      "companyId": company_id,
      "companyName": company_name
    }.compact
    unless request_options.nil? || request_options&.additional_body_parameters.nil?
      req.body = { **(request_options&.additional_body_parameters || {}) }.compact
    end
    req.url "#{@async_request_client.get_url(request_options: request_options)}/company"
  end
  parsed_json = JSON.parse(response.body)
  parsed_json&.map do |item|
    item = item.to_json
    Pinnacle::Company.from_json(json_object: item)
  end
end

#register_company(company:, company_contact:, point_of_contact:, optionals: nil, request_options: nil) ⇒ Pinnacle::RegisterCompanyResponse

Register a company for RCS with the Pinnacle platform

Examples:

api = Pinnacle::Client.new(
  base_url: "https://api.example.com",
  environment: Pinnacle::Environment::DEFAULT,
  api_key: "YOUR_API_KEY"
)
api.register_company(
  company: { name: "name", address: "address", ein: "ein", description: "description", brand_color: "brandColor", logo_url: "logoUrl", hero_url: "heroUrl" },
  company_contact: { primary_website_url: "primaryWebsiteUrl", primary_website_label: "primaryWebsiteLabel", primary_phone: "primaryPhone", primary_phone_label: "primaryPhoneLabel", primary_email: "primaryEmail", primary_email_label: "primaryEmailLabel", privacy_policy_url: "privacyPolicyUrl", tos_url: "tosUrl" },
  point_of_contact: { poc_name: "pocName", poc_title: "pocTitle", poc_email: "pocEmail" }
)

Parameters:

  • company (Hash)

    Request of type Pinnacle::CompanyDetails, as a Hash

    • :name (String)

    • :address (String)

    • :ein (String)

    • :description (String)

    • :brand_color (String)

    • :logo_url (String)

    • :hero_url (String)

  • company_contact (Hash)

    Request of type Pinnacle::CompanyContact, as a Hash

    • :primary_website_url (String)

    • :primary_website_label (String)

    • :primary_phone (String)

    • :primary_phone_label (String)

    • :primary_email (String)

    • :primary_email_label (String)

    • :privacy_policy_url (String)

    • :tos_url (String)

  • point_of_contact (Hash)

    Request of type Pinnacle::PointOfContact, as a Hash

    • :poc_name (String)

    • :poc_title (String)

    • :poc_email (String)

  • optionals (Hash) (defaults to: nil)

    Request of type Pinnacle::Optionals, as a Hash

    • :additional_websites (Array<Pinnacle::AdditionalWebsite>)

    • :additional_phone_numbers (Array<Pinnacle::AdditionalPhoneNumber>)

    • :additional_emails (Array<Pinnacle::AdditionalEmail>)

    • :test_numbers (Array<String>)

  • request_options (Pinnacle::RequestOptions) (defaults to: nil)

Returns:



570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
# File 'lib/rcs.rb', line 570

def register_company(company:, company_contact:, point_of_contact:, optionals: nil, request_options: nil)
  response = @async_request_client.conn.post do |req|
    req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
    req.headers["PINNACLE-API-Key"] = request_options.api_key unless request_options&.api_key.nil?
    req.headers = {
  **(req.headers || {}),
  **@async_request_client.get_headers,
  **(request_options&.additional_headers || {})
    }.compact
    unless request_options.nil? || request_options&.additional_query_parameters.nil?
      req.params = { **(request_options&.additional_query_parameters || {}) }.compact
    end
    req.body = {
      **(request_options&.additional_body_parameters || {}),
      company: company,
      companyContact: company_contact,
      pointOfContact: point_of_contact,
      optionals: optionals
    }.compact
    req.url "#{@async_request_client.get_url(request_options: request_options)}/company/register"
  end
  Pinnacle::RegisterCompanyResponse.from_json(json_object: response.body)
end

#send_message(request:, request_options: nil) ⇒ Pinnacle::SendMessageResponse

Send a SMS or RCS message to a phone number

Examples:

api = Pinnacle::Client.new(
  base_url: "https://api.example.com",
  environment: Pinnacle::Environment::DEFAULT,
  api_key: "YOUR_API_KEY"
)
api.send_message(request: { phone_number: "phone_number", message_type: "card", message: { cards: [{ title: "title" }] } })

Parameters:

Returns:



471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
# File 'lib/rcs.rb', line 471

def send_message(request:, request_options: nil)
  response = @async_request_client.conn.post do |req|
    req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
    req.headers["PINNACLE-API-Key"] = request_options.api_key unless request_options&.api_key.nil?
    req.headers = {
  **(req.headers || {}),
  **@async_request_client.get_headers,
  **(request_options&.additional_headers || {})
    }.compact
    unless request_options.nil? || request_options&.additional_query_parameters.nil?
      req.params = { **(request_options&.additional_query_parameters || {}) }.compact
    end
    req.body = { **(request || {}), **(request_options&.additional_body_parameters || {}) }.compact
    req.url "#{@async_request_client.get_url(request_options: request_options)}/send"
  end
  Pinnacle::SendMessageResponse.from_json(json_object: response.body)
end

#update_company(company_id:, company: nil, company_contact: nil, point_of_contact: nil, optionals: nil, request_options: nil) ⇒ Pinnacle::UpdateCompanyResponse

Update a company on the Pinnacle platform

Examples:

api = Pinnacle::Client.new(
  base_url: "https://api.example.com",
  environment: Pinnacle::Environment::DEFAULT,
  api_key: "YOUR_API_KEY"
)
api.update_company(company_id: "companyId")

Parameters:

  • company_id (String)
  • company (Hash) (defaults to: nil)

    Request of type Pinnacle::Company, as a Hash

    • :id (Integer)

    • :created_at (DateTime)

    • :name (String)

    • :address (String)

    • :ein (String)

    • :description (String)

    • :brand_color (String)

    • :logo_url (String)

    • :hero_url (String)

    • :primary_website_url (String)

    • :primary_website_label (String)

    • :primary_phone (String)

    • :primary_phone_label (String)

    • :primary_email (String)

    • :primary_email_label (String)

    • :privacy_policy_url (String)

    • :tos_url (String)

    • :poc_name (String)

    • :poc_title (String)

    • :poc_email (String)

    • :test_numbers (Array<String>)

    • :status (String)

    • :additional_websites (Array<Pinnacle::CompanyAdditionalWebsitesItem>)

    • :additional_emails (Array<Pinnacle::CompanyAdditionalEmailsItem>)

    • :additional_phone_numbers (Array<Pinnacle::CompanyAdditionalPhoneNumbersItem>)

  • company_contact (Hash) (defaults to: nil)

    Request of type Pinnacle::CompanyContact, as a Hash

    • :primary_website_url (String)

    • :primary_website_label (String)

    • :primary_phone (String)

    • :primary_phone_label (String)

    • :primary_email (String)

    • :primary_email_label (String)

    • :privacy_policy_url (String)

    • :tos_url (String)

  • point_of_contact (Hash) (defaults to: nil)

    Request of type Pinnacle::PointOfContact, as a Hash

    • :poc_name (String)

    • :poc_title (String)

    • :poc_email (String)

  • optionals (Hash) (defaults to: nil)

    Request of type Pinnacle::Optionals, as a Hash

    • :additional_websites (Array<Pinnacle::AdditionalWebsite>)

    • :additional_phone_numbers (Array<Pinnacle::AdditionalPhoneNumber>)

    • :additional_emails (Array<Pinnacle::AdditionalEmail>)

    • :test_numbers (Array<String>)

  • request_options (Pinnacle::RequestOptions) (defaults to: nil)

Returns:



650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
# File 'lib/rcs.rb', line 650

def update_company(company_id:, company: nil, company_contact: nil, point_of_contact: nil, optionals: nil,
                   request_options: nil)
  response = @async_request_client.conn.post do |req|
    req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
    req.headers["PINNACLE-API-Key"] = request_options.api_key unless request_options&.api_key.nil?
    req.headers = {
  **(req.headers || {}),
  **@async_request_client.get_headers,
  **(request_options&.additional_headers || {})
    }.compact
    unless request_options.nil? || request_options&.additional_query_parameters.nil?
      req.params = { **(request_options&.additional_query_parameters || {}) }.compact
    end
    req.body = {
      **(request_options&.additional_body_parameters || {}),
      companyId: company_id,
      company: company,
      companyContact: company_contact,
      pointOfContact: point_of_contact,
      optionals: optionals
    }.compact
    req.url "#{@async_request_client.get_url(request_options: request_options)}/company/update"
  end
  Pinnacle::UpdateCompanyResponse.from_json(json_object: response.body)
end

#update_settings(webhook_url:, request_options: nil) ⇒ Pinnacle::UpdateSettingsResponse

Initializes settings related to RCS messaging, including webhook registration.

Examples:

api = Pinnacle::Client.new(
  base_url: "https://api.example.com",
  environment: Pinnacle::Environment::DEFAULT,
  api_key: "YOUR_API_KEY"
)
api.update_settings(webhook_url: "webhook_url")

Parameters:

  • webhook_url (String)

    Webhook URL to receive inbound messages

  • request_options (Pinnacle::RequestOptions) (defaults to: nil)

Returns:



410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
# File 'lib/rcs.rb', line 410

def update_settings(webhook_url:, request_options: nil)
  response = @async_request_client.conn.post do |req|
    req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
    req.headers["PINNACLE-API-Key"] = request_options.api_key unless request_options&.api_key.nil?
    req.headers = {
  **(req.headers || {}),
  **@async_request_client.get_headers,
  **(request_options&.additional_headers || {})
    }.compact
    unless request_options.nil? || request_options&.additional_query_parameters.nil?
      req.params = { **(request_options&.additional_query_parameters || {}) }.compact
    end
    req.body = { **(request_options&.additional_body_parameters || {}), webhook_url: webhook_url }.compact
    req.url "#{@async_request_client.get_url(request_options: request_options)}/update_settings"
  end
  Pinnacle::UpdateSettingsResponse.from_json(json_object: response.body)
end