This invention relates generally to the telecommunication field, and more specifically to a new and useful system and method for enabling dynamic multi-modal communication in the telecommunication field.
Mobile internet has brought about a wide variety of modes of communication. Mobile phone devices are capable of telephony communication such as SMS, MMS, and PSTN voice calls, as well as IP based communication such as client application messaging and VoIP. Despite the numerous modes of communication, communication applications are limited to the initial mode of established communication. Additionally, those wishing to communicate with a larger number of devices encounter feasibility issues because of the complications of dealing with such a diverse set of devices and communication options. Thus, there is a need in the telecommunication field to create a new and useful system and method for enabling dynamic multi-modal communication. This invention provides such a new and useful system and method.
The following description of preferred embodiments of the invention is not intended to limit the invention to these preferred embodiments, but rather to enable any person skilled in the art to make and use this invention.
As shown in
Additionally, the system can be applied to facilitate communication campaigns wherein the system is used for transforming a communication request specifying multiple destinations into multiple customized communications for a set of destinations as shown in
The system is preferably integrated with a multitenant communication platform that provides communication services to developer applications and services. The system is preferably implemented in combination with a telephony platform such as the one described in patent application Ser. No. 12/417,630 filed 2 Apr. 2009, entitled “System and Method for Processing Telephony Sessions”, which is hereby incorporated in its entirety by this reference. The telephony platform is preferably a multitenant telephony platform that allows multiple accounts to configure telephony applications for use on the platform. The telephony platform can be designed for one or more mediums of communication. The telephony platform can additionally be a cloud hosted platform as a service system or an on-premise solution. The telephony platform can be a server, a server cluster, a collection of components on a distributed computing system, or any suitable network accessible computing infrastructure. The system may alternatively be used in combination with a text or multi-media based messaging system, a video or voice chat system, a screen-sharing system, and/or any suitable communication platform.
The communication system no of a preferred embodiment functions to receive communication requests and establish communications as regulated by input of the routing system 120 and the communication cost service 130. The communication service 110 can comprise of one or more services that establish communication through various channels and over varying protocols of the plurality of routing options 112.
The communication system no preferably includes a communication request input to receive communication requests. A communication request preferably specifies at least one communication destination. The communication destination can be a communication endpoint such as a telephony number, a short code phone number, a SIP address, a communication account identifier, and/or any suitable communication endpoint. The communication destination may alternatively be a higher-level destination entity identifier, wherein a single communication entity identifier can be associated with multiple communication endpoints. For example, a user ID may be associated with a telephone communication endpoint and an IP communication application endpoint. The communication request may include a set of communication destinations.
In one variation, the communication request additionally will include an origin identifier or origin identifiers. In a first variation, the origin identifier will be the communication endpoint that will be connected or that will be indicated as the sender. The origin endpoint can be some variety of communication endpoints as described above. An origin identifier is preferably managed by the telephony platform, which includes terminating communication to that communication endpoint and preferably making outgoing communications from that communication endpoint. An account or any suitable platform entity scope can have an allocated origin identifier. Herein accounts are described as the preferred assignee of an allocated communication endpoint that can be used as an origin endpoint, but communication endpoints can be allocated to any suitable entity. In one variation, each account will have at least one communication endpoint to make or receive communications. In another variation, an account may use a pool of shared communication endpoints shared between multiple accounts. In some cases, proxy communication endpoints can be established if the endpoints of the legs of the communication do not use compatible forms of endpoints. The communication endpoint of the origin can be the same type or a different type of communication endpoint as the communication destination. The origin identifier can be explicitly included in the communication request or the origin identifier can be associated with an account associated with the communication request.
When multiple communication destinations are specified, the set of origin identifiers are preferably used to balance transmission of the set of communications. For example, when sending SMS messages or MMS messages carriers will throttle or prevent sending a certain number of messages in a given period and also the rate at which those messages are sent. The system can schedule and distribute message transmission across the origin identifiers. In another variation, the origin identifiers are not expressed in which case the origin for a communication may be set to a default origin identifier. Alternatively, the full set of origin identifiers for an account may be used. In yet another variation, a transmission time window may be specified which could signal a time-to-live constraint. Transmission is preferably balanced across the origin identifiers with scheduling to satisfy the time window constraint. Additionally, origin identifiers may be dynamically allocated to an account to satisfy transmitting the set of communications in the time window.
A communication medium may be implicit for the communication system such as in the situation where only one medium is available, but the communication medium may alternatively be specified in the request. The medium can specify a general form of the communication, such as voice, video, text, synchronous, and/or asynchronous. The medium can alternatively specify particular protocols of communication such as SMS, MMS, PSTN, SIP, and the like. In appropriate communication requests, frequently asynchronous communication requests, the content of the communication may be included in the request. For example, the text for an SMS message is preferably included in the communication request. In other variations, the communication request is for establishing a synchronous communication session between the source and the destination such as in a voice or video call where communication can occur between at least two communication endpoints in real-time. Additionally a request can include an urgency property, which determines communication guarantees and TTL (Time to live) procedures of an established communication.
The communication request is preferably received using an application programming interface (API). More preferably the communication request is received through a representational state transfer (REST) API, Restful (i.e., having characteristics of a REST API) can include the characteristics of having a uniform interface separating client and servers, the client-server communication is stateless where all information to process a client request is transferred in the request; cacheable requests if specified, interoperability with a layered service infrastructure, and/or a uniform interface between clients and servers. The API can be exposed externally such that requests directly originate from outside entities. The API can alternatively be an internal API used during operation of the telephony platform.
Alternatively, the communication request input may be an application processing system, wherein an instruction in a script or application code triggers an event for acting on communication event. In another variation, the communication request input can be an eventing system controlled through a user interface. For example, an account may set up various text/media messaging campaigns through an administrator control panel.
The communication request can alternatively be received from an incoming communication through a supported communication transport protocol. Preferably the communication platform acts as a proxy or register for a number of endpoints, such that communications initiated outside the communication platform and directed at endpoints registered by the platform are routed to the communication platform for handling. The communication platform can include mappings of endpoints to applications, other destination endpoints, or use any suitable logic to determine a content and destination of a communication. Processing of incoming communications can be used to enable two-way transformation of communications between at least two endpoints.
The plurality of routing options 112 of a preferred embodiment functions to service communications from the system to at least one destination endpoint. The plurality or routing options 112 preferably includes a set of different communication services that target different transport protocols. For example, the plurality of routing options 112 can include an SMS service, MMS service, a push notification service, an IP messaging service, proprietary third party messaging service, PSTN service, SIP voice service, video communication service, screensharing service, fax service, email service, and/or any suitable communication service. Each of the communication services can include dedicated communication service instances for different routing options (e.g., different carriers, regions, and the like). Alternatively, a communication service can use multiple different routing options when communicating. The routing options can be used in transmitting messages, receiving messages, managing synchronous communication sessions, or performing any suitable operation of a given transport protocol. Depending on the message medium and possibly the origin and destination endpoints, the routing options may be different channel protocols directed at different service provider destinations. For an SMS message, the routing options may be SMPP connections to various service provider destinations. The routing options of an MMS message can be SMTP connections to various service provider destinations (for MM4) or alternatively they can be various service resources accessed over HTTP/SOAP (for MM7). A voice call can have routing options including PSTN channels of different carriers, SIP, and other protocols. The routing options preferably include various commercial relationships between the service provider and the communication platform. The routing options can additionally span multiple mediums/transport protocols. For example, a message router may be configured to selectively transmit a message using a routing option selected from SMS routing options, proprietary push notification routing options (e.g., Apple or Google push notifications) and application messaging routing options (e.g., message sent to a Whatsapp user).
The content conversion engine 114 of a preferred embodiment functions to transform content. In one variation, the content conversion engine 114 transforms content from a first form suitable for a first protocol to a second form suitable for a second form. In another variation, the content conversion engine 114 transforms content to otherwise satisfy the constraints associated with communication intent. For example, the content conversion engine 114 can convert resource links into trackable resource links in coordination with the resource tracking system 130. The content conversion engine can include various media processing services, routines, and modules. The content conversion engine 114 can be a standalone service of a platform or alternatively integrated within a variety of other components such as the various routing option services 112. The content conversion engine 114 can include various media processing components such as a media transcoding engine, text-to-speech (TTS) service, speech recognition engine, and other suitable media processing services. The content conversion engine 114 can additionally include content formatting services that ensure content is suitable for communication over a selected routing option. Different routing options can have different rules such as character limits, media size limits, metadata information, security tokens, and other suitable communication properties. The formatting services can translate content to a format suitable for a message. For example, text content may require being split in to multiple messages for delivery over SMS. The content conversion engine 114 can transform content media prior to delivery to a destination. For asynchronous messages, the media is transformed and then transmitted. In synchronous communication, the content conversion engine 114 could stream the converted media content such as down sampling an inbound audio stream and routing to an endpoint with a communication channel with lower bandwidth. In another variation, the content conversion engine may convert asynchronous communication to generated media played during a synchronous communication session. For example, a first user may carry on a text message based chat with a person listening to a phone call, where the text messages of the first user are converted using a text to speech service and responses of a user are presented as audio media messages or transcribed responses. Such transformations can be performed to fulfill different constraints expressed in the communication intent parameters. In one variation, an asynchronous message such as a text, picture, or video message may be converted to a message delivered over a voice or live video chat session as a way of verifying receipt of the message. For example, a text message can be converted to speech audio played during the call. Since the system may not be able to verify you saw a text message, reading the text message may ensure the message was delivered and possibly heard by the user. Additionally, the system can expose the extent of message delivery during the synchronous delivery of the communication. For example, if a user hangs up half way through the audio, the message is 50% received by the user.
The routing system 120 functions to generate at least one possible routing option for the outbound routing of the communication service no. The routing system 120 receives routing requests from the communication system 110. The routing system 120 is configured to process the request and use properties of the request to generate at least one selected/recommended routing option. More preferably the routing system generates a set of at least two routing options and returns the list to the communication system 110. The set or list of routing options can be prioritized or include parameters that can be used to select a desired routing option. The routing system 120 preferably includes a routing table. The routing table includes a list of available routing option profiles 122. In one variation, a routing option profile in the routing table preferably includes an assigned priority and a weight. The priority and weight may be assigned for different communication parameters. For example, the prefix of a destination phone number is preferably associated with various routing options each having a priority and weight. The routing table can include additionally or alternative parameters associated with the different routing options such as quality score, regional associations (e.g., related country codes or area codes or geographic proximity), quota prioritizations, internal cost (e.g., cost to the platform), effective internal cost (e.g., cost to transmit requested content considering transforming the content into multiple messages), and/or any suitable parameter used in selecting a routing option. The quota prioritization parameter can be used to prioritize a routing option in response to a contractual obligation. Some routing options can be maintained through contractual obligations of meeting a quota of communications (e.g., number of calls, number of messages, rate of communication). This quota prioritization parameter can be dynamically updated or fixed based on the communication restriction. The quota prioritization can be used to positively count towards the selection of that routing option (e.g., if a system wants to meet a certain quota of messages) or alternatively negative impact selection (e.g., if a system wants to avoid going over a limit). The relative properties for the associated routing options are used to generate a route priority list. The routing priority list is a customized list of routing options prioritized for a particular communication request. Multiple routing options are prioritized in order of preference. The listed routing options may not have indicated preference and be a sub-set of the full set of routing options.
The routing option profiles 122 functions to characterize different channels of communication available to the communication platform. As mentioned above, a routing option can exist for large variety of transport protocols such as the communication protocols for SMS messaging, MMS messaging, push notifications, an IP messaging, proprietary third party messaging, PSTN voice, SIP voice, video communication service, screensharing, faxing, email, and/or any suitable communication protocol. The routing options can include parameters that can be used in selecting a routing option based on content type and/or urgency properties. When translating between different modes of communication, the different transport protocols can have different prioritization. For example, media messaging is preferably sent through a routing option with similar media support. The routing system 120 may additionally include a routing table interface such that an administrator or client device may update the parameters used to determine the communication routing. Routing options can preferably be added, removed, or updated. In one exemplary use case, an administrator may need to update the routing options based on contract changes with various carriers. In another exemplary use case, communication performance may unexpectedly drop for a carrier. An administrator could easily edit the routing table such that communications avoid that carrier until the issue is resolved. In yet another use case, communication quality of a used routing option is measured and used to update a quality parameter of a routing option. In another variation, the routing table interface is an application programming interface (API) such that parameters of the routing table may be automatically updated.
The resource access tracking system 130 functions to facilitate running communication campaigns that depend on resource links. The resource access tracking system functions to automatically create trackable communication campaigns. The resource access tracking system 130 is preferably invoked when media, applications, and/or web site access should be tracked. The resource access tracking system preferably creates unique tracking resource links for a given communication and resource in that communication. The resources access tracking system 130 is preferably used to simplify generation of a messaging campaign. In one use case, an account holder will want to transmit a message with a promotional URI in the message body to a set of different endpoints. The content conversion engine 114 preferably detects the URI and cooperates with the resource access tracking system 130 to generate a unique URI for each message transmitted in the campaign as shown in
The resource access tracking system 130 may additionally be used to set dynamic message tailoring through various data driven communication optimization. In one variation, communication intent may include a set of optional content. The resource access tracking system 130 may facilitate evaluating access of different message options and then automatically selecting more successful message options. For example, A/B testing within a set of options may allow later transmissions in the campaign to use message options vetted through A/B evaluation.
The origin transmission balance system 140 functions to coordinate distributing communications across multiple origin identifiers. As mentioned above some forms of communication have communication rate and cap limits. For example, long codes and short codes both have limits on total number of messages per day and the inter-message transmission rate. Violating such limits may result in communication failure for that or subsequent communications. The origin transmission balance system can preferably automatically plan and schedule when and from what endpoints communications will be sent as shown in
As shown in
The method can be used in transmitting an outbound communication, but, in one variation, may be implemented in two communication conversations/sessions so that responses to communications are similarly transformed to an appropriate transport protocol. The method is preferably used to unify communication across a plurality of communication protocols. Some exemplary communication transport protocols can include SMS, MMS, Fax, email, IP messaging, push notifications, PSTN voice, SIP voice, SIP video, IP based synchronous communication, and/or any suitable form of communication. As shown in
In one implementation, the method is used by developers, applications, and services to express communication intentions, such as intended content of a message, intended mode of a communication session, communication constraints such as timing, budget, and other suitable intent parameters. For example, an application can specify an image and text that should be delivered to an endpoint. The method operates to deliver the content of the intended media, possibly transforming the final delivered format to conform to an appropriate mode of communication with the destination.
While the method can be applied to the delivery of a single communication to a single destination entity, the method is more preferably applied to executing outbound communication campaigns wherein an account, application, or service expresses intent to deliver one or more communications to a set of destination endpoints. In this preferred embodiment, as shown in
In some cases, such campaigns may have various constraints. A communication request can specify a time-to-live constrain, which can act to define a set time window in which the message is relevant. The method can manage transmission of the plurality of messages such as to satisfy the TTL requirement or fulfill the TTL requirement in an appropriate manner (reporting which numbers were not contacted due to a TTL failure). As described more below, the time constraint may additionally be used to impact the selection and/or allocation of originating phone numbers as shown in
In another variation, a communication request can specify a confirmation constraint where the sender wants feedback on delivery. As described below, this may be implemented through use of a tracking link transformation process which can be used to transform telephony messages to individually trackable communications based on interactions with media, application, or website links as shown in
Block S110, which includes maintaining routing options of at least two transport protocols, functions to manage at least two different modes of communication. The modes of communication are preferably divided into multiple routing options. The routing options can include different transport protocols, but can additionally include different carriers, suppliers of a communication channel, regional routing options of a transport protocol, or any suitable route variation. Information relating to the routing options can be stored in a table or database of routing option profiles. The routing option profiles can be used in selecting preferred, optimal, or otherwise capable routing options when communicating. The routing options can additionally include different originating identifiers. The originating identifiers are different types of phone numbers (e.g., short codes, long codes, toll-free numbers, etc.). The originating identifiers can additionally include usernames and user IDs for such communication options such as IP messaging. A given entity can have a set of originating identifier options. An entity of the communication platform can be an account, sub-account, application, service, or other suitable entity scope. An entity can preferably be substantially permanently allocated one or more originating identifier. An entity may additionally be allocated a temporary originating endpoint or a shared/communal originating endpoint. For example, an account can have a set of fifty different possible originating phone numbers across a variety of country codes and area codes. As described below in the phone management variation, the different originating identifiers additionally provide other routing options.
Block S120, which includes receiving a communication request, functions to obtain an instruction for sending or establishing an outbound communication. The communication request is preferably received at a communication service, which can be a server or machine that establishes a communication or at least direct a secondary service to establish a communication. The communication service may be specifically configured for a particular medium or mode of communication such as Public Switch Telephone Network (PSTN) calls, Session Initiation Protocol (SIP) voice or video calls, Short Message Service (SMS) messages, Multimedia Messaging Service (MMS) messages, IP based messaging, push notifications, proprietary communication protocols, and/or any suitable communication medium. The communication service may be used for a plurality of communication mediums. A communication request is preferably associated with some form of entity or account, which can have an authentication process to verify that the request is legitimate. Additionally, an account or other suitable entity may have a permissions policy that can regulate the type and manner of communication requests.
A communication request can include communication properties, which can include at least one destination endpoint, optionally one or more originating endpoints, communication content, and/or other properties of the communication. The communication request can additionally define control directives as constraint properties such as, TTL constraints, receipt confirmation activation, feedback confirmation activation, communication mode restrictions, a max price parameter, a quality limit, and/or other properties used to gate or control communication.
The combination of properties defined in the communication request preferably defines communication intent expressed through a single message request. As opposed to specific communication instructions (e.g., send a SMS message to this endpoint originating from this endpoint and then send a second SMS message to this other endpoint at this endpoint at a later instance), the communication request can include intended communication content that indicates generalized objectives of the communication. In the diverse communication field, there are a wide variety of limitations and restrictions depending on the mode of communication, the particular telecommunication scarier, geographic region, content, and other features. A request of communication intent includes the high-level objective and is transformed into an executed process that automatically negotiates the challenges of fulfilling such a request.
The intended communication content can specify raw message content or medium of communication. In the case of asynchronous communication, the request of communication intent can include content intended for delivery and the intended destination entity. The final form of the content, whether the transmitted content is text, a graphic, a video, a link to an external resource, an audio message, and/or any suitable medium is not exclusively determined through the request as long as the content is delivered. Similarly, the exact destination endpoint may not be strictly defined as long as the message is delivered to the intended entity. In the case of synchronous communication, the mode of communication can similarly be generalized. The communication request can include a specified mode of communication, which can place limits on the suitable routing options. The possible modes can include a voice session mode (where synchronous audio should be transmitted between at least two endpoints), a video session mode (where video and/or audio should be transmitted between at least two endpoints), and synchronous message transmission mode (where text, images, videos, and/or other media can be delivered to a destination). A voice session mode can result in a voice session (e.g., PSTN or SIP based), a video session with only audio, or any synchronous form of communication through which audio can be transmitted. A video session can be a video session or alternatively downgraded to just audio. An asynchronous message transmission mode can result in any executed communication that transmits desired content. Synchronous communication mediums can similarly be used when in an asynchronous message transmission mode.
Upon receiving a communication request, at least a subset of information from the communication request is sent to the routing service. Preferably, the subset of information sent to the routing service is sent in the form of a routing request. The subset of information includes communication properties specified in the communication request of block Sno. Additionally, at least a subset of information from the communication request may be sent to a communication cost service. Preferably, the subset of information is sent to the communication cost service in the form of a cost request. The routing request and the cost request preferably include at least the destination of the communication. The routing request and/or cost request may additionally or alternatively include content of the communication, account information for the entity sending the communication request, the originating endpoint, the mode or medium of communication, and/or any suitable information. The routing request and the cost request are preferably sent in parallel but may alternatively be sent sequentially or in any suitable manner. The routing request and the cost request can be independent in that how a communication is routed and the attributed costs of that communication do not directly rely on each other. One expected benefit is that the quality of communication can be increased while simulating a simplified cost model to user accounts. As described below, a maximum cost parameter specified in a communication request can be accommodated after initially fulfilling the requests.
In one variation, the communication properties include a specified transport mode of communication. The specified transport mode can be a set of modes of communication permitted and/or blocked for the communication request. The set of operational transport modes can include a synchronous voice session mode of communication, a synchronous video session mode of communication, an asynchronous message transmission mode of communication and/or specific permitted/prohibited transport protocols (e.g., SMS, MMS, push, etc.). A specified transport mode can restrict, modify, or otherwise impact the selection of routing options.
In the communication campaign variation, Block S120 can include receiving a messaging request that includes communication intent parameters and a set of communication destinations S122. The set of communication destinations may be defined as abstract destination entities, which are then mapped to a destination endpoint depending on the selected communication routing option. For example, the destination endpoint could be a username, which may have a telephone number associated with SMS, MMS, and voice routing options and an username associated with an IP messaging service. However, the set of communication destinations more commonly will be a defined set of phone numbers. A communication request with a set of destination phone numbers will preferably have the communication content (or some suitable transformed form of the communication content) delivered to that set of destination phone numbers. Companies wanting to talk to a large number of people at once with a generic message or media can use express corresponding intent in the request.
Block S130, which includes selecting routing option, functions to determine a routing option of a communication. The communication request is preferably processed through a sequence of heuristics that can be used to select appropriate routing option. Selecting a routing option can include identifying one or more routing options capable of completing the communication request and identified according to a priority heuristic. In one variation, a single routing option is selected. In an alternative embodiment, a priority list of routing options is generated, and a routing option is selected from the list. The routing option is more specifically capable of completing the communication to a communication endpoint mapped to the specified destination endpoint. The specified endpoint may not be the receiving endpoint. A secondary endpoint associated with the specified endpoint may be targeted. For example, if a phone number is specified, but IP based messaging is instead used to communication with a username endpoint, wherein the user of the phone number operates the username endpoint. In the variation where the set of routing options is limited to a single communication protocol, Block S130 may be optional or used in selecting specific routing options within that single communication protocol such as which telecommunications carrier to use.
In querying routing options, the intended communication content can be analyzed to identify suitable transport protocols. The routing options of suitable transport protocols can then be filtered according destination endpoint and intended content and/or intended mode of communication. A destination can be identified as including an associated carrier, a country/regional location property, and/or device capabilities. Routing options having been reduced to routings options capable of communication intended content and capable of delivering to the intended destination can then be further filtered according to availability. Some routing options can be suffering from down time or quality issues at any given time—such routing options are preferably not considered for selection.
Selection heuristics can consider many factors. The heuristics can consider content and mode of communication of a routing option, reliability of a routing option, feature capability of a routing option, urgency compliant features, price of communication, user presence information, user preference of communication, user history of communication, originating endpoint communication limits, and/or any suitable factor that impacts an appropriate routing option.
A first heuristic can give weight to a routing option based on the involved content transformations. Different transport protocols can be given different preference depending on the original form of content. For example, sending a text message would give preference to a routing option involving an SMS with text over a routing option involving transforming the text to text-to-speech audio and playing over a PSTN phone call. The medium of intended content is preferably preserved, but the medium of content can be transformed depending on available routing options and/or other heuristic priorities.
A second heuristic can give weight to routing options according to quality scores, reliability, communication confirmation, and other suitable reliability and urgency compliance features. In one variation, a communication request can be accompanied by a TTL limit. The TTL limit can define a time window in which a message is delivered. Different routing options can have varying time to delivery predictions, and the routing option can be selected to satisfy the TTL restriction. In one variation, the TTL may be acted upon by selecting a routing option that better fulfills the TTL time restriction. In another variation, the TTL is used to select the originating identifier and scheduling of transmissions. SMS and MMS messaging have limits on the number of unique recipients in a day for a given phone number. SMS and MMS messaging additionally have limits on the messaging throughput rate (e.g., number of messages per second). If an account were to try to send a thousand messages in thirty minutes from a single number, most of those communications would fail due to limiting of communication.
Additionally, a communication request can include different confirmation requirements. A request may specify that an acknowledgment confirm the message was transmitted successfully or similarly that the message was read by the end user. Different transport protocols will have varying capabilities or mechanisms to provide such verification or acknowledgment. If a requested feature is not supported by a routing option, that routing option may not be considered. Similarly, the type of selected routing option may determine the type of content transformation to complete the confirmation. For example, sending an SMS or MMS message with interaction feedback may result in conversion of a link and/or a media file into a tracking link.
A third heuristic can give weight to routing options that have not satisfied a communication quota or contractual obligation. A quota can be set for a time frame, and a routing option has the target of satisfying the quota in that time frame. For example, an SMS routing option can have a quota of five thousand messages in a month. Selection of a routing option within a priority list or prioritization within the list can be based on satisfying the quota. For example, a routing option further from a quota can be prioritized above a routing option that has satisfied a quota, surpassed a quota, or does not include a quota. Additionally, a quota can be weighted to indicate importance of the quota. For example, some routing options may have a more important quota goal (e.g., a routing option will be cancelled by a carrier), and other routing options may have less important quota goal (e.g., special discounting pricing isn't provided if not satisfied). Various rules and properties can be encoded into a routing option to facilitate relative prioritization/selection of routing options. One exemplary use of a quota includes a routing option using a particular network carrier that was negotiated at an internal cost rate that has a minimum number of communications that should be met. Another exemplary use of a quota may include regulating a routing option with a rate limit of SMS messages sent in a minute allowed over a network carrier of a second routing option.
A fourth heuristic can give weight to routing options with lower internal cost (e.g., payment to outside partners and/or operational cost). A related heuristic can include calculating effective internal cost of a routing option. The effective internal cost is the predicted cost to the communication cost to the platform. In some cases, communicating over a first transport protocol has different communication limits compared to a second transport protocol and as a result a routing option of the first transport protocol may require transmitting the intended content in one form (e.g., in a single message) and the routing option of the second transport protocol may require transmitting the intended content in a second form (e.g., split into two or more messages). The effective internal cost can be the number of messages to transmit the intended content multiplied by the internal cost of an individual message transmitted on the routing option. The cost can be a financial cost and is frequently dependent on the specific routing option. The difference between the communication cost and the effective internal cost can be the profit of the platform for an individual communication. The priority heuristic is preferably in place to increase profits across a plurality of communications.
A fifth heuristic can give weight to routing options with particular feature capabilities (e.g., message confirmation, no message size restrictions, multimedia support). A feature heuristic can be enforced if specified content specifies a desired delivered format.
A sixth heuristic can consider presence information of the destination. A presence service can be integrated into the platform and provide availability of a user across multiple devices and/or protocols. For example, a user may be accessible through a phone voice session, SMS and MMS on the phone, push notifications on the phone, and through an IP protocol of an application on a second browser device. Presence information can indicate if any of those channels are active, prioritization/preference of the channels.
A seventh heuristic can consider communication history and/or destination preference. Preference of a destination can be inferred from communication. Modes of communication used to initiate outbound communication from an endpoint can be considered indicators of user preference. Alternatively, a user profile can be configured with prioritization of endpoints and/or protocols.
These factors and other suitable prioritization factors can be combined in any suitable manner to form a prioritization heuristic used in ranking routing options.
Block S140, which includes transforming content of the communication request to a compatible form of the selected routing option, functions to convert media content of the communication to a format suitable for transmitting. In asynchronous communication, the content is converted and then transmitted to the destination. In synchronous communication, the content can be transcoded and streamed to a destination such that the content/medium is generated in substantially real-time with the communication session. The form of the transformation is determined based on the originating format of the communication content and the selected routing option. If the routing option is the same as the originating transport protocol, transformation of content may be skipped. Transformation can include translating to a text form, generating a URI link to the content, replacing a URI or media file with a tracking URI, generating an audio version of the content, generating a video version of the content, satisfying protocol restrictions (e.g., character limits, file size limits, encoding, and the like), segmenting into multiple messages, grouping multiple content into a single object, supplying unspecified metadata, and/or making any suitable transformation. Exemplary transformations may include SMS to MMS, MMS to SMS, SMS/MMS to IP push/proprietary IP/client application, SMS/MMS to email/fax, fax/email to SMS/MMS, IP messaging to SMS/MMS, Voice to SMS, Voice to MMS, SMS to voice, Voice to video, Video to voice, and/or any suitable form of transformation.
Block S150, which includes transmitting content to a destination endpoint on the selected routing option, functions to establish or execute the communication. The communication is preferably implemented on the selected routing option using the transformed content. In some variations, communication confirmation of delivery or of reading can be requested. The delivery and reading request can be fulfilled through the transport protocol of the selected routing option. As shown in
As shown in
As shown in
Block S230, which includes selecting a communication mode according to the communication intent parameters, functions to select how each transmitted communication is communicated. Each destination endpoint may have different capabilities. The method may include querying an endpoint information service to determine the set of capabilities, preferences, history, and other suitable factors that can impact communicating with a destination. As one aspect, the communication mode can include selecting the origin identifier of an account used as the calling entity for a transmission. When executing a telephony campaign, some endpoints may have communication mode of MMS, another subset will be assigned a communication mode of SMS, and still another subset may be assigned a communication mode of IP messaging. Selecting a communication mode may use any of the heuristics described above.
Block S240, which includes transforming content of communication request, functions to transform the content. As described above, this may depend on the selected communication mode, which is further dependent on the destination endpoint. As with the communication mode, the form of transformation can be customized for each destination endpoint. The actual form of content between two destination endpoints may be different. For example, one may receive actual image content while another receives a link to a hosted image. However, the objective of the communication request is preferably achieved in both by communicating the image to the end user. Transforming content of communication request may include transforming communication content to include a trackable link to monitor and report on interactions with the communication. A trackable link is preferably a URI, URL or any suitable resource reference that routes access to a controlled resource of the communication platform (or another cooperative resource). The controlled resource preferably monitors access and provides access to desired content. The trackable link can be in the form of a URL shortening service automatically or electively invoked on links in a communication. The trackable link can be a redirection link for a URL, where a user initially accesses the trackable URI, the access is recorded, and then the user is redirected to the original URL The trackable link can additionally be used for media files or application references. When accessing a trackable link of an image, the image may be hosted by the communication platform at the trackable link.
Block S250, which includes transmitting transformed content to a destination endpoint in the selected communication mode, functions to transmit each customized communication to the destination. Transmitting the transformed content for each destination endpoint will result in the transmission of a set of communications. The transmissions can be performed in series, parallel, and/or at any suitable intervals. Preferably the transmission schedule is determined based on the phone number selection process.
As shown in
Block S310, which includes detecting a condition for transmitting across multiple endpoints, functions to determine the conditions for balancing transmissions across multiple origin endpoints. Multiple endpoints are used when multiple messages need to be sent and there is some implicit or explicit expectation of time of communication. Transmitting across multiple endpoints is preferably performed for SMS and MMS messages that have daily limits on unique recipients and message per second throughput limit. Detecting a condition for transmitting across multiple endpoints can be automatic. In one situation, the communication platform may automatically balance communications across the full set of origin endpoints of an account to achieve increased transmission throughput by the account. Alternatively, the system may default to sending at a rate that avoids straining the system and does not require allocation of new origin endpoints (i.e., doesn't violate limits). In the case where an account has a single origin endpoint and there is no other constraint, there is no balancing across endpoints and transmissions are executed so as to not strain the system and not violate the messaging limits of that endpoints.
In another variation, the communication request specifies a set of origin endpoints. The set of origin endpoints is preferably used, and the transmission throughput may be based on the number of specified origin endpoints.
In another variation, the communication request specifies a TTL, which will set a timing constraint. That timing constraint will set a target throughput for communicating with the set of destination endpoints. In some variations, the number of origin endpoints available to an account is insufficient to achieve the TTL. If the TTL cannot be achieved Block S320 may allocate endpoints to the account so that the time constraint can be satisfied. Detecting a condition for transmitting across multiple endpoints may additionally include detecting number of endpoints to fulfill a timing condition. The number of endpoints may be determined after determining the communication mode for the set of destination endpoints because the mixture of communication modes may change the endpoint number requirements. For example, destination entities reached over IP messaging can reduce the number of telephone numbers.
Block S320, which includes allocating originating endpoints, functions to assign use of a phone number to a platform entity as shown in
In some cases, allocating numbers may require payment for those numbers in which case, allocation may require user approval. In one variation, as shown in
Block S330, which includes selecting originating endpoints from which to transmit the set of communications, functions to determine the mapping between origin endpoints and destination endpoints. An origin endpoint can preferably handle transmitting messages to multiple destinations no greater than the throughput limit. If the throughput limit for any given endpoint is 1 message per second and the TTL time constraint is 30 minutes then a single origin endpoint can theoretically send approximately 1800 messages. Selecting of the originating endpoints can include selecting endpoints at least in part based on the regional relationship between the originating endpoint and the destination endpoints as shown in
Block S340, which includes scheduling transmissions across the selected originating endpoints, functions to set the rate or timing of transmissions. The transmission of messages is preferably distributed over a time window. In some cases, the time window may require executing the transmissions at an optimized rate, where the origin endpoints transmit the messages at approximately the throughput limit of the endpoints. In other cases, the time window is sufficiently long that they can be distributed so as to satisfy but the time window constraint but without sending them at a maximum speed.
Block S350, which includes transmitting the communications according to a schedule of transmissions, functions to send the communications. The set of origin endpoints will preferably transmit communications in parallel. But transmission can be choreographed in any suitable manner.
As shown in
Block S400 preferably includes detecting content to be referenced through a link, generating a trackable link, transforming the communication content to include the trackable link, detect access of the link, record access of the link, present resource of the original link (either redirecting or rendering a hosted version), and exposing access information for the link which may include exposing access information across the set of links (for a given communication request, campaign, account or any suitable scope).
The content to be referenced through a link, such as media, images, video, audio, multimedia, and text, may be removed from the communication and instead delivered through the communication as a trackable link. A user will have to access the link to view the media. In another variation, the content is an original URI that forms part of the communication content. Other forms of content may be pin codes or other communication portions that can may warrant interaction by a user to access.
The trackable link is preferably a shortened URL but can be any suitable URI. The trackable URI references a resource controlled by the communication platform such that accessing the link initially directs an application layer request (e.g., HTTP, HTTPS, SPDY, etc.) to the controlled resource (e.g., a server of the telecommunications platform). If the trackable URI was a proxy for an original URI, then the trackable URI redirects the application layer request to the original URI. If the trackable URI is to a media object, that media object may be hosted by the controlled resource, and the user is not redirected elsewhere.
Capturing communication interactions through trackable links can be used during a communication campaign to multiple destination endpoints. The account requesting the communication campaign can provide the communication in a base single instance format, and the communication platform automatically generates unique trackable links for the set of destination endpoints. When applied, a first recipient might receive a text message but with a URI unique to them and a second recipient might receive a substantially identical text message but with a second URI that is unique to the second recipient. Access to the trackable links is monitored across recipients. Access data exposed to an associated account can include detailed logs of what users access the link and when, regional statistics (e.g., click rate based on state), overall statistics (e.g., conversion rate, etc.), and other suitable analytics. Access data can be exposed as API resources, as information conveyed through a user interface, or as a programmatic notification. In one variation, when a trackable link is accessed, the communication platform detects the access event and then can issue a callback event to a pre-configured callback URI. Preferably an account will pre-emptively configure a callback URI, which functions as a URI to an outside resource controlled by the account. The callback URI is preferably hosted by an application server of the account owner and can be configured to perform any suitable action when receiving a callback communication. For example, when a user of a destination clicks a tracking link, a server of the communication platform will detect the access. The communication platform can then submit an HTTP POST or GET request to the configured callback URI (or any suitable application layer protocol communication such as HTTPs or SPDY) along with any suitable metadata (such as time of access, client information gathered from the access event, etc.). The server of the callback URI can then perform any suitable logic such as update a database or send another communication to the user.
The system and methods of the preferred embodiment and variations thereof can be embodied and/or implemented at least in part as a machine configured to receive a computer-readable medium storing computer-readable instructions. The instructions are preferably executed by computer-executable components preferably integrated with the communication system. The computer-readable medium can be stored on any suitable computer-readable media such as RAMs, ROMs, flash memory, EEPROMs, optical devices (CD or DVD), hard drives, floppy drives, or any suitable device. The computer-executable component is preferably a general or application specific processor, but any suitable dedicated hardware or hardware/firmware combination device can alternatively or additionally execute the instructions.
As a person skilled in the art will recognize from the previous detailed description and from the figures and claims, modifications and changes can be made to the preferred embodiments of the invention without departing from the scope of this invention defined in the following claims.
As a person skilled in the art will recognize from the previous detailed description and from the figures and claims, modifications and changes can be made to the preferred embodiments of the invention without departing from the scope of this invention defined in the following claims.
This application is a continuation application of co-pending U.S. patent application Ser. No. 16/054,879, filed Aug. 3, 2018, which is a continuation application of U.S. application Ser. No. 15/059,753, filed Mar. 3, 2016, now U.S. Pat. No. 10,069,773, which is a continuation application of U.S. application Ser. No. 14/489,371, filed Sep. 17, 2014, now U.S. Pat. No. 9,325,624, which claims the benefit of U.S. Provisional Application No. 61/902,985, filed on Nov. 12, 2013, each of which is incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
61902985 | Nov 2013 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 16054879 | Aug 2018 | US |
Child | 17867566 | US | |
Parent | 15059753 | Mar 2016 | US |
Child | 16054879 | US | |
Parent | 14489371 | Sep 2014 | US |
Child | 15059753 | US |