func New(cOpts *ClientOptions, mOpts *MessageOptions) (*Service, error) {
	if cOpts == nil {
		return nil, fmt.Errorf("client-options cannot be nil")
	}
	if mOpts == nil {
		return nil, fmt.Errorf("message-options cannot be nil")
	}
	if mOpts.Source == "" {
		return nil, fmt.Errorf("source cannot be empty")
	}
	client, err := plivo.NewClient(
		cOpts.AuthID,
		cOpts.AuthToken,
		&plivo.ClientOptions{
			HttpClient: cOpts.HTTPClient,
		},
	)
	if err != nil {
		return nil, fmt.Errorf("plivo.NewClient() failed: %w", err)
	}
	return &Service{
		client: client.Messages,
		mopts:  *mOpts,
	}, nil
}
New creates a new instance of plivo service.
package plivo
import (
	"context"
	"fmt"
	"net/http"
	"strings"
	plivo "github.com/plivo/plivo-go"
)
type ClientOptions struct {
	AuthID    string  
	AuthToken string  
	HTTPClient *http.Client  
}
type MessageOptions struct {
	Source string  
	CallbackURL    string  
	CallbackMethod string  
}
type plivoMsgClient interface {
	Create(plivo.MessageCreateParams) (*plivo.MessageCreateResponseBody, error)
}
type Service struct {
	client       plivoMsgClient
	mopts        MessageOptions
	destinations []string
}