System and method for enabling dynamic multi-modal communication

Abstract
A system and method that includes receiving a messaging request that includes communication intent parameters and a set of communication destinations, wherein the messaging request is authenticated as a request of a first account; dynamically transforming messages according to individual communication destinations, wherein for the set of communication destinations: selecting a communication mode according to communication intent parameters, transforming content of the messaging request, and transmitting transformed content to a destination endpoint in the selected communication mode.
Description
TECHNICAL FIELD

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.


BACKGROUND

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.





BRIEF DESCRIPTION OF THE FIGURES


FIG. 1 is schematic representation of a system of a first preferred embodiment;



FIG. 2 is schematic representation of a system of a first preferred embodiment applied to a communication campaign;



FIGS. 3-4 are schematic representations of variations of the system including a resource access tracking system;



FIG. 5 is a schematic representation of a variation of the system including an origin transmission balance system;



FIG. 6 is a communication flow diagram of a method sending an asynchronous message;



FIG. 7 is a communication flow diagram of a method establishing a synchronous communication session;



FIG. 8 is a communication flow diagram of a variation of applying the method iteratively to a set of destination entities;



FIG. 9 is a communication flow diagram of a variation of balancing transmissions across a set of origin identifiers;



FIG. 10 is a communication flow diagram of a variation of balancing transmissions across a set of origin identifiers and allocating origin endpoints;



FIG. 11 is a communication flow diagram of a method for responding to responses from a destination;



FIG. 12 is a communication flow diagram of a method for capturing communication interactions through trackable links;



FIG. 13 is a communication flow diagram of a method translating between two communication modes;



FIGS. 14 and 15 are flow diagrams of a variation using a campaign resource;



FIG. 16 is a graphical representation of origin endpoints selected according to regional association; and



FIG. 17 is a flowchart representation of a method variation of capturing communication interactions through trackable links.





DESCRIPTION OF THE PREFERRED EMBODIMENTS

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.


1. System for Enabling Dynamic Multi-Modal Communication


As shown in FIG. 1, a system for enabling multi-modal communication of a preferred embodiment can include a communication system 110 with a plurality of routing options 112 a content conversion engine 114 and a routing system 120 that includes a plurality of routing option profiles 122. The system functions to enable transparent multi-modal communication through a communication platform. The multi-modal communication is preferably transparent to users of the system in that an entity requesting communication expresses communication intent, and the system appropriately establishes the communication with one or more desired entities using a suitable transport protocol. Additionally, the system can manage full-duplex multi-modal communication—message and communication session responses can be similarly transparently managed by the system.


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 FIG. 2. The system may additionally include a resource access tracking system 130 and/or an origin transmission balance system 140 as shown in FIGS. 3-5. When the system is applied to communication campaigns, the system functions to simplify the process of sending a communication or a set of communications to a set of different target entities. Several complicating aspects of communicating with multiple destinations are simplified so that an end user (e.g., an application or a developer account) can simply express communication intent. The communication intent can include message contents and a set of destinations. The communication intent is processed such that each destination is transmitted in an appropriate manner. Aspects that may complicate a campaign can include selecting an appropriate communication mode (e.g., SMS, MMS, IP messaging, voice, etc.), balancing transmissions across origin endpoints, geographical/regional customization, time window restrictions for when the communication is relevant (i.e., TTL limits of a communication), tracking receipt or interaction with a communication, and/or other aspects. The system may be applied to address these problems.


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 110 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 telephone 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 110. 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 website 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 FIG. 3. When a user accesses the link, the tracking link will detect the access, optionally collect information about the accessing device, and then redirect to the originally intended resource. The resource access tracking system 130 preferably creates some interface through which access information is exposed. In one variation, a campaign control panel can present various statistics about the access rates, which endpoints actually accessed the resource, device information about those that accessed, and other suitable information. In one variation, a URI is converted to a trackable URI as shown in FIG. 4. In another variation, a media resource is converted to a hosted media resource accessible at or through a trackable URI. In another variation, an application referenced through an application URI protocol is changed for a web-based trackable URI that redirects to the application URI.


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 FIG. 5. The origin transmission balance system 140 can additionally include heuristics that account for regional proximity between origin identifiers and destination identifiers. For example, local origin identifiers may be preferred over out of area phone numbers or phone numbers with different country codes. The origin transmission balance system 140 may additionally facilitate allocating communication endpoints to better fulfill a communication request.


2. Method for Enabling Dynamic Multi-Modal Communication


As shown in FIGS. 6 and 7, a method for enabling dynamic multi-modal communication of a preferred embodiment can include maintaining routing options of at least two transport protocols S110, receiving a communication request S120, selecting routing option S130, transforming content of communication request to compatible form of the selected routing option S140, and transmitting transformed content to a destination endpoint on the selected routing option S150. The method functions to normalize communication to be automatically communicated according to communication intent. The method functions to simplify send of a message by abstracting the complexity of sending a message in a fractured and complex communication environment.


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 FIG. 6, the method can be applied to asynchronous communication, but the method can additionally or alternatively be applied to asynchronous communication as shown in FIG. 7 or a hybrid of synchronous and asynchronous transport protocols. In addition to unifying modes of communication, the method can unify different destination endpoints of a user.


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 FIG. 8, the method more preferably includes applying the method iteratively to a set of destination entities indicated in the original request, which would include receiving a messaging request that includes communication intent parameters and a set of communication destinations S122 and dynamically transforming message transmissions to the communication destinations according to individual communication destinations S200, wherein block S200 includes for each communication destination in the set of destinations: selecting a communication mode according to the communication intent parameters S230, transforming content of communication request S240, and transmitting transformed content to a destination endpoint in the selected communication mode S250. The method functions to handle expressing communication intent for a plurality of destinations, and then having a communication system automatically execute those communications. The method can handle differing device capabilities and/or preferences, various communication message formats. Numerous entities use mass-recipient messaging campaigns, sending SMS or MMS messages with links, promotional offers, or media.


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 FIG. 9. Additionally, phone number management may be performed independent of communication content augmentation, but may additionally be performed with communication modality and content transformation. In one example, the phone number management is applied to communications that are delivered with unaltered content and are fixed to an SMS communication mode. In another example, the phone number management is applied to communications that may be selectively sent over different routing options and may or may not receive content transformation.


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 FIGS. 11 and 12. The trackable link variation functions to enable simple communication intent to provide full cycle tracking of interaction with a communication for a set of different destinations. An account operator is alleviated of creating specialized links, tracking those links, and determining how those results are impacted by the communication. The trackable interactions may further be used in messaging campaigns to create content optimization through A/B testing and other data driven analysis and customization of a message. The tracking link transformation process may be used independently or in combination with other method variations such as the phone number management variation.


Block Silo, 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 Silo. 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 telephony 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 FIG. 11, an urgency parameter can specify that a receipt acknowledgment be made. Subsequent communications in asynchronous and synchronous forms of communication can be processed to select an appropriate routing option, optionally using communication history to influence routing option selection. In asynchronous communication (e.g., messaging), responses can be received from the delivery endpoint. A similar process can be invoked to determine the route used to deliver the response as shown in FIG. 11, but alternatively, a routing option of the communication that prompted the initial communication response can be used. In synchronous communication, the destination endpoint can be bridged with the originating endpoint.


As shown in FIG. 13, the method can be similarly applied to responses from a destination endpoint. In this variation, an incoming communication is interpreted as a communication request. Accordingly, the method can translate between one or more communication modes.


As shown in FIG. 8, the method of applying communication intent to a communication campaign of a set of destinations preferably includes dynamically transforming message transmissions to the communication destinations according to individual communication destinations S200. Block S200 functions to iteratively execute dynamic multi-modal communication as described above for Blocks S130, S140, and S150 wherein those processes are applied to a set of phone numbers. Block S200 may be used to dynamically transform message transmissions in parallel, in series, according to a coordinated schedule, or in any suitable manner. Block S200 preferably includes for each communication destination in the set of destinations: selecting a communication mode according to the communication intent parameters S230, transforming content of communication request S240, and transmitting transformed content to a destination endpoint in the selected communication mode S250. Block S230, S240, and S250 can be substantially similar to Blocks S130, S140, and S150 respectively but may additionally or alternatively include the variations described below. When processing a communication campaign, Block S200 preferably employs the origin identifier selection process as described herein to balance across multiple origin endpoints and/or achieve targeted origin proximity to a destination endpoint. Block S200 may additionally include or be applied towards tracking communication interactions through trackable URIs.


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 URI. 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 FIG. 9, the method may include balancing transmissions across a set of origin identifiers S300, which functions to distribute a set of communications across multiple origin endpoints of an account (or application, service, or other suitable entity scope). More practically, the method variation of S300 functions to abstract away the complications of dealing with communication volume limits and to use multiple communication endpoints to achieve message volume within a defined time window. The origin identifiers are preferably telecommunication endpoints and more specifically phone numbers. The phone numbers are preferably allocated to an account but at least a subset may alternatively be temporarily allocated to the account or shared between with one or more distinct accounts. Balancing transmissions across a set of origin identifiers may include detecting a condition for transmitting across multiple endpoints S310, allocating originating endpoints S320, selecting originating endpoints from which to transmit the set of communications S330, scheduling transmissions across the selected originating endpoints S340, and/or transmitting the communications according to a schedule of transmissions S350.


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 FIG. 10. Allocating originating endpoints is preferably used when the account has insufficient origin endpoints to satisfy a constraint (e.g., not enough phone numbers to transmit all the messages in the designated time window). Herein accounts are used as the preferred entity, but an endpoint may alternatively be allocated for an application service, sub-account, or other entity. Allocating an originating endpoint preferably assigned or registers an endpoint for that account such that the account can make outgoing communications from that endpoint. The communication platform may have a number of endpoints that can be assigned for account usage. Alternatively, endpoints may be ported into the communication platform and then assigned for account usage. As allocating endpoints may take some time, such as if endpoints are ported into the system, then there may be a delay before a communication campaign can be executed. However, a communication campaign could pre-emptively plan or schedule a communication. Alternatively, an account could use an interface to pre-emptively set up an account to execute campaigns. In one example, an account administrator would use a web portal to setup a “campaign” which may have the destination endpoints, the time constraints and other factors. It may or may not specify the communication content. Phone number allocation may be part of the process of setting up a campaign. Once an account has created a campaign model, the account can make a request to send set communication content for that campaign. The request includes the destination endpoints through a reference to the identifier of the campaign.


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 FIGS. 14 and 15, a campaign resource can be pre-emptively configured with a set of endpoints and any constraint properties such as TTL time windows where the communication is automatically balanced over multiple origin endpoints. Pre-emptively creating the campaign resource may be used to provide confirmation of allocating new origin endpoints. Once the campaign resource is created, communication requests can specify the campaign identifier to define the destinations and timing as shown in FIG. 15. In one example, a user sets up a messaging campaign through a user interface, before initiating the campaign, the user interface prompts the user for timing constraints and will show the number of phone numbers allocated to satisfy a selected constraint. Approval of the messaging campaign may be dependent on approval or payment for allocation of new endpoints, as shown in FIG. 14. In another variation, the approval is achieved through a programmatic request and response model. For example, an application requests a communication with a time constraint. The account for the application has insufficient managed endpoints to complete the communications in the time constraint—an error or warning response is transmitted to the application. The application can approve or initiate the allocation of sufficient endpoints to complete the communication request. In another variation, the communication intent will include a budget constraint. The budget constraint may be explicitly set in a parameter of the communication request, but may alternatively be expressed through pre-paid credit in the account. If the budget allows for allocation, the phone numbers may be automatically allocated to the account and then used in transmission of the communications. The allocation preferences for an account may alternatively be set or expressed through any suitable mechanism.


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 FIG. 16. For example, origin endpoints from the same country and/or area code of a destination endpoint may be prioritized as a pairing. Selecting an originating endpoint may be pre-planned before beginning transmission, but it may alternatively be on-demand as the set of communications are dequeued from some awaiting transmission queue. The selection of originating endpoints may alternatively be executed in any suitable manner.


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 FIG. 17, the method may include capturing communication interactions through trackable links S400, which functions to apply content transformation within a campaign to monitor impact and results of the campaign. Through Block S400, the number of users that access content can at least partially be monitored. Block S400 can be used to create a campaign analytics dashboard wherein different communication campaigns can be compared. With the data collected through Block S400, an account manager can view data on when and where people interacted with a communication (e.g., viewed a communication or clicked a link to access referenced content). Block S400 may alternatively be used for data driven optimization of communication campaigns by evaluating different forms of content and automatically selecting different content options to improve interaction results.


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.

Claims
  • 1. A method for controlling a communication system integrated with a multi-tenant communication platform, comprising: controlling the communication system to receive at least one messaging request provided to the communication system by at least one external system having a first account, the at least one messaging request including intended communication content and a plurality of communication destinations, each communication destination being one of: a telephony number, anda username associated with at least one of a telephony number and an IP messaging service username;controlling the communication system to authenticate the received at least one messaging request;controlling the communication system to dynamically transform messages according to individual communication destinations, wherein for each communication destination in the plurality of communication destinations the communication system: selects a communication mode according to the at least one messaging request and communication capabilities of the communication destination;transforms content associated with the intended communication content according to the communication capabilities of the communication destination; andtransmits transformed content to the communication destination in the selected communication mode,wherein at least two communication destinations of the plurality of communication destinations have different communication capabilities,wherein the communication mode selected by the communication system is one of: an asynchronous messaging communication mode, anda synchronous voice session communication mode in which speech audio corresponding to a text message is played during a voice session, andwherein dynamically transforming messages according to individual communication destinations comprises balancing transmissions across a set of origin endpoints.
  • 2. The method of claim 1, wherein balancing transmissions across a set of origin endpoints comprises selecting origin endpoints from which to transmit the transformed content, scheduling transmissions across the selected origin endpoints, and transmitting the transformed content from the selected origin endpoints, wherein the transformed content is transmitted according to a schedule of transmissions.
  • 3. The method of claim 2, wherein balancing transmissions across a set of origin endpoints comprises, according to the set of communication destinations and a timing constraint: allocating origin endpoints to the first account to satisfy the timing constraint for transmission to each communication destination.
  • 4. The method of claim 2, wherein selecting origin endpoints comprises mapping an origin endpoint to a communication destination, at least in part, according to regional association of the origin endpoint and the communication destination.
  • 5. The method of claim 2, further comprising accessing an endpoint information database; and wherein the communication system selects a communication mode according to communication capability associated with the communication destination as indicated by the endpoint information database.
  • 6. The method of claim 1, wherein the messaging request includes a transmission time constraint, and wherein balancing transmissions across a set of origin endpoints schedules transmissions at a schedule to satisfy the time constraint while adhering to transmission rate limits of the origin endpoints.
  • 7. The method of claim 1, wherein dynamically transforming messages according to individual communication destinations further comprises detecting a resource link in the at least one messaging request; wherein transforming content comprises converting the resource link to a unique trackable resource link associated with the communication destination; and further comprising exposing at least a portion of access data of the trackable resource link.
  • 8. The method of claim 7, wherein the access data is exposed through an analytics user interface.
  • 9. The method of claim 7, wherein exposing at least a portion of access data of the trackable resource link comprises transmitting an application layer protocol communication to a configured callback URI of the account upon detecting access of the trackable URI.
  • 10. The method of claim 1, wherein the at least one messaging request specifies a media file as communication content; and further comprising converting the media file to a media reference URI included in a textual message body.
  • 11. The method of claim 10, further comprising detecting access of the media reference URI and exposing at least a portion of access information to the first account.
  • 12. The method of claim 1, wherein the at least one messaging request specifies an asynchronous communication content; and wherein the selected communication mode is a synchronous communication mode.
  • 13. The method of 12, further comprising exposing extent of message delivery during the synchronous delivery of the communication.
  • 14. The method of claim 12, wherein the asynchronous communication content is a text message, and the synchronous communication mode is speech audio played during a voice session.
  • 15. The method of claim 1, wherein the at least one messaging request specifies a media file in a content parameter; and wherein the selected communication mode for at least a subset of communication destinations is a short message service (SMS) communication option.
  • 16. The method of claim 1, wherein at least two different communication modes are selected during the dynamic transforming of messages.
  • 17. The method of claim 16, wherein each communication destination is a telephony communication destination.
  • 18. The method of claim 1, wherein the asynchronous messaging communication mode includes one of an SMS communication mode, a MMS communication mode, a push notification communication mode, and an application messaging communication mode.
  • 19. A method for controlling a communication system integrated with a multi-tenant communication platform, comprising: responsive to at least one messaging request provided to the communication system by at least one external system having a first account, the at least one messaging request including intended communication content and a plurality of communication destinations, controlling the communication system to: authenticate the first account; andfor each communication destination of the plurality of communication destinations: select a communication mode according to the at least one messaging request;select an origin endpoint of a plurality of origin endpoints allocated to the first account; andtransmit content associated with the at least one messaging request in the selected communication mode from the selected origin endpoint to the communication destination,wherein the communication mode selected by the communication system is one of: an asynchronous messaging communication mode, anda synchronous voice session communication mode in which speech audio corresponding to a text message is played during a voice session,wherein transmissions are balanced across the endpoints allocated to the first account, andwherein each communication destination is one of: a telephony number, anda username associated with at least one of a telephony number and an IP messaging service username.
  • 20. The method of claim 19, wherein the communication system selects the communication mode according to communication capabilities of the communication destination and message content parameters of the at least one messaging request,wherein the method further comprises: for each communication destination, the communication system transforming the intended communication content according to the communication capabilities, wherein the communication capabilities are provided by an endpoint information service, andwherein at least two communication destinations of the plurality of communication destinations have different communication capabilities.
  • 21. The method of claim 20, wherein transforming content comprises: converting a resource link associated with the at least one messaging request into a unique trackable resource link for the communication destination,wherein a unique trackable resource link is generated for each communication destination of the plurality of communication destinations.
  • 22. The method of claim 21, wherein each communication destination and each origination endpoint is a telephony endpoint.
  • 23. The method of claim 19, further comprising: in a case where a number of origin endpoints allocated to the first account is insufficient to satisfy a timing constraint for transmission to each communication destination while adhering to transmission rate limits of the allocated origin endpoints, the communication system allocating additional origin endpoints to the first account to satisfy the timing constraint and rate limits for transmission to each communication destination.
  • 24. The method of claim 19, wherein the asynchronous messaging communication mode includes one of an SMS communication mode, a MMS communication mode, a push notification communication mode, and an application messaging communication mode.
CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims the benefit of U.S. Provisional Application Ser. No. 61/902,985, filed on 12 Nov. 2013, which is incorporated in its entirety by this reference.

US Referenced Citations (426)
Number Name Date Kind
5274700 Gechter et al. Dec 1993 A
5526416 Dezonno et al. Jun 1996 A
5581608 Jreij et al. Dec 1996 A
5598457 Foladare et al. Jan 1997 A
5867495 Elliott Feb 1999 A
5934181 Adamczewski Aug 1999 A
6026440 Shrader et al. Feb 2000 A
6094681 Shaffer et al. Jul 2000 A
6138143 Gigliotti et al. Oct 2000 A
6185565 Meubus et al. Feb 2001 B1
6192123 Grunsted et al. Feb 2001 B1
6206564 Adamczewski Mar 2001 B1
6223287 Douglas et al. Apr 2001 B1
6269336 Ladd et al. Jul 2001 B1
6373836 Deryugin et al. Apr 2002 B1
6425012 Trovato et al. Jul 2002 B1
6430175 Echols et al. Aug 2002 B1
6434528 Sanders Aug 2002 B1
6445694 Swartz Sep 2002 B1
6445776 Shank et al. Sep 2002 B1
6459913 Cloutier Oct 2002 B2
6493558 Bernhart et al. Dec 2002 B1
6496500 Nance et al. Dec 2002 B2
6501832 Saylor et al. Dec 2002 B1
6507875 Mellen-Garnett et al. Jan 2003 B1
6577721 Vainio et al. Jun 2003 B1
6600736 Ball et al. Jul 2003 B1
6606596 Zirngibl et al. Aug 2003 B1
6614783 Sonesh et al. Sep 2003 B1
6625258 Ram et al. Sep 2003 B1
6625576 Kochanski et al. Sep 2003 B2
6636504 Albers et al. Oct 2003 B1
6662231 Drosset et al. Dec 2003 B1
6704785 Koo et al. Mar 2004 B1
6707889 Saylor et al. Mar 2004 B1
6711249 Weissman et al. Mar 2004 B2
6738738 Henton May 2004 B2
6757365 Bogard Jun 2004 B1
6765997 Zirngibl et al. Jul 2004 B1
6768788 Langseth et al. Jul 2004 B1
6778653 Kallas et al. Aug 2004 B1
6785266 Swartz Aug 2004 B2
6788768 Saylor et al. Sep 2004 B1
6792086 Saylor et al. Sep 2004 B1
6792093 Barak et al. Sep 2004 B2
6798867 Zirngibl et al. Sep 2004 B1
6807529 Johnson et al. Oct 2004 B2
6807574 Partovi et al. Oct 2004 B1
6819667 Brusilovsky et al. Nov 2004 B1
6820260 Flockhart et al. Nov 2004 B1
6829334 Zirngibl et al. Dec 2004 B1
6834265 Balasuriya Dec 2004 B2
6836537 Zirngibl et al. Dec 2004 B1
6842767 Partovi et al. Jan 2005 B1
6850603 Eberle et al. Feb 2005 B1
6870830 Schuster et al. Mar 2005 B1
6873952 Bailey et al. Mar 2005 B1
6874084 Dobner et al. Mar 2005 B1
6885737 Gao et al. Apr 2005 B1
6888929 Saylor et al. May 2005 B1
6895084 Saylor et al. May 2005 B1
6898567 Balasuriya May 2005 B2
6912581 Johnson et al. Jun 2005 B2
6922411 Taylor Jul 2005 B1
6931405 El-Shimi et al. Aug 2005 B2
6937699 Schuster et al. Aug 2005 B1
6940953 Eberle et al. Sep 2005 B1
6941268 Porter et al. Sep 2005 B2
6947417 Laursen et al. Sep 2005 B2
6947988 Saleh Sep 2005 B1
6961330 Cattan et al. Nov 2005 B1
6964012 Zirngibl et al. Nov 2005 B1
6970915 Partovi et al. Nov 2005 B1
6977992 Zirngibl et al. Dec 2005 B2
6985862 Stroem et al. Jan 2006 B2
6999576 Sacra Feb 2006 B2
7003464 Ferrans et al. Feb 2006 B2
7006606 Cohen et al. Feb 2006 B1
7010586 Allavarpu et al. Mar 2006 B1
7020685 Chen et al. Mar 2006 B1
7039165 Saylor et al. May 2006 B1
7062709 Cheung Jun 2006 B2
7076037 Gonen et al. Jul 2006 B1
7076428 Anastasakos et al. Jul 2006 B2
7089310 Ellerman et al. Aug 2006 B1
7103003 Brueckheimer et al. Sep 2006 B2
7103171 Annadata et al. Sep 2006 B1
7106844 Holland Sep 2006 B1
7111163 Haney Sep 2006 B1
7140004 Kunins et al. Nov 2006 B1
7143039 Stifelman et al. Nov 2006 B1
7197331 Anastasakos et al. Mar 2007 B2
7197461 Eberle et al. Mar 2007 B1
7197462 Takagi et al. Mar 2007 B2
7197544 Wang et al. Mar 2007 B2
7225232 Elberse May 2007 B2
7227849 Raesaenen Jun 2007 B1
7260208 Cavalcanti Aug 2007 B2
7266181 Zirngibl et al. Sep 2007 B1
7269557 Bailey et al. Sep 2007 B1
7272212 Eberle et al. Sep 2007 B2
7272564 Phillips et al. Sep 2007 B2
7277851 Henton Oct 2007 B1
7283515 Fowler Oct 2007 B2
7286521 Jackson et al. Oct 2007 B1
7287248 Adeeb Oct 2007 B1
7289453 Riedel et al. Oct 2007 B2
7296739 Mo et al. Nov 2007 B1
7298732 Cho Nov 2007 B2
7308085 Weissman Dec 2007 B2
7308408 Stifelman et al. Dec 2007 B1
7324633 Gao et al. Jan 2008 B2
7324942 Mahowald et al. Jan 2008 B1
7328263 Sadjadi Feb 2008 B1
7330463 Bradd et al. Feb 2008 B1
7330890 Partovi et al. Feb 2008 B1
7340040 Saylor et al. Mar 2008 B1
7349714 Lee et al. Mar 2008 B2
7369865 Gabriel et al. May 2008 B2
7376223 Taylor et al. May 2008 B2
7376586 Partovi et al. May 2008 B1
7376733 Connelly et al. May 2008 B2
7376740 Porter et al. May 2008 B1
7412525 Cafarella et al. Aug 2008 B2
7418090 Reding Aug 2008 B2
7428302 Zirngibl et al. Sep 2008 B2
7440898 Eberle et al. Oct 2008 B1
7447299 Partovi et al. Nov 2008 B1
7454459 Kapoor et al. Nov 2008 B1
7457397 Saylor et al. Nov 2008 B1
7473872 Takimoto Jan 2009 B2
7486780 Zirngibl et al. Feb 2009 B2
7496054 Taylor Feb 2009 B2
7500249 Kampe et al. Mar 2009 B2
7505951 Thompson et al. Mar 2009 B2
7519359 Chiarulli et al. Apr 2009 B2
7522711 Stein et al. Apr 2009 B1
7536454 Balasuriya May 2009 B2
7552054 Stifelman et al. Jun 2009 B1
7571226 Partovi et al. Aug 2009 B1
7613287 Stifelman et al. Nov 2009 B1
7623648 Oppenheim et al. Nov 2009 B1
7630900 Strom Dec 2009 B1
7631310 Henzinger Dec 2009 B1
7644000 Strom Jan 2010 B1
7657433 Chang Feb 2010 B1
7657434 Thompson et al. Feb 2010 B2
7668157 Weintraub et al. Feb 2010 B2
7672295 Andhare et al. Mar 2010 B1
7675857 Chesson Mar 2010 B1
7676221 Roundtree et al. Mar 2010 B2
7715547 Ibbotson et al. May 2010 B2
7779065 Gupta et al. Aug 2010 B2
7875836 Imura et al. Jan 2011 B2
7882253 Pardo-Castellote et al. Feb 2011 B2
7920866 Bosch et al. Apr 2011 B2
7926099 Chakravarty et al. Apr 2011 B1
7936867 Hill et al. May 2011 B1
7962644 Ezerzer et al. Jun 2011 B1
7979555 Rothstein et al. Jul 2011 B2
8023425 Raleigh Sep 2011 B2
8081958 Soederstroem et al. Dec 2011 B2
8103725 Gupta et al. Jan 2012 B2
8126128 Hicks, III et al. Feb 2012 B1
8149716 Ramanathan et al. Apr 2012 B2
8150918 Edelman et al. Apr 2012 B1
8233611 Zettner Jul 2012 B1
8243889 Taylor et al. Aug 2012 B2
8266327 Kumar et al. Sep 2012 B2
8295272 Boni et al. Oct 2012 B2
8306021 Lawson et al. Nov 2012 B2
8326805 Arous et al. Dec 2012 B1
8346630 McKeown Jan 2013 B1
8355394 Taylor et al. Jan 2013 B2
8417817 Jacobs Apr 2013 B1
8429827 Wetzel Apr 2013 B1
8462670 Chien et al. Jun 2013 B2
8467502 Sureka Jun 2013 B2
8503639 Reding Aug 2013 B2
8503650 Reding Aug 2013 B2
8509068 Begall et al. Aug 2013 B2
8532686 Schmidt et al. Sep 2013 B2
8542805 Agranovsky et al. Sep 2013 B2
8594626 Woodson et al. Nov 2013 B1
8601136 Fahlgren Dec 2013 B1
8611338 Lawson Dec 2013 B2
8649268 Lawson et al. Feb 2014 B2
8667056 Proulx et al. Mar 2014 B1
8675493 Buddhikot et al. Mar 2014 B2
8755376 Lawson Jun 2014 B2
8767925 Sureka Jul 2014 B2
8806024 Francis et al. Aug 2014 B1
8837465 Lawson Sep 2014 B2
8838707 Lawson et al. Sep 2014 B2
8948356 Nowack Feb 2015 B2
8964726 Lawson Feb 2015 B2
20010038624 Greenberg et al. Nov 2001 A1
20010043684 Guedalia et al. Nov 2001 A1
20020006124 Jimenez et al. Jan 2002 A1
20020006125 Josse et al. Jan 2002 A1
20020006193 Rodenbusch et al. Jan 2002 A1
20020067823 Walker et al. Jun 2002 A1
20020077833 Arons et al. Jun 2002 A1
20020126813 Partovi et al. Sep 2002 A1
20020136391 Armstrong Sep 2002 A1
20020176378 Hamilton et al. Nov 2002 A1
20020198941 Gavrilescu et al. Dec 2002 A1
20030006137 Wei et al. Jan 2003 A1
20030018830 Chen et al. Jan 2003 A1
20030026426 Wright et al. Feb 2003 A1
20030046366 Pardikar et al. Mar 2003 A1
20030051037 Sundaram et al. Mar 2003 A1
20030058884 Kallner et al. Mar 2003 A1
20030059020 Meyerson et al. Mar 2003 A1
20030060188 Gidron et al. Mar 2003 A1
20030061317 Brown et al. Mar 2003 A1
20030061404 Atwal et al. Mar 2003 A1
20030088421 Maes et al. May 2003 A1
20030103620 Brown et al. Jun 2003 A1
20030123640 Roelle et al. Jul 2003 A1
20030195990 Greenblat Oct 2003 A1
20030196076 Zabarski et al. Oct 2003 A1
20030211842 Kempf et al. Nov 2003 A1
20030231647 Petrovykh Dec 2003 A1
20040011690 Marfino et al. Jan 2004 A1
20040044953 Watkins et al. Mar 2004 A1
20040052349 Creamer et al. Mar 2004 A1
20040071275 Bowater et al. Apr 2004 A1
20040101122 Da Palma et al. May 2004 A1
20040165569 Sweatman et al. Aug 2004 A1
20040172482 Weissman et al. Sep 2004 A1
20040205689 Ellens et al. Oct 2004 A1
20040213400 Golitsin et al. Oct 2004 A1
20040218748 Fisher Nov 2004 A1
20050005200 Matena et al. Jan 2005 A1
20050010483 Ling Jan 2005 A1
20050021626 Prajapat et al. Jan 2005 A1
20050025303 Hostetler Feb 2005 A1
20050038772 Colrain Feb 2005 A1
20050043952 Sharma et al. Feb 2005 A1
20050047579 Salame Mar 2005 A1
20050091572 Gavrilescu et al. Apr 2005 A1
20050128961 Miloslavsky et al. Jun 2005 A1
20050135578 Ress et al. Jun 2005 A1
20050141500 Bhandari et al. Jun 2005 A1
20050147088 Bao et al. Jul 2005 A1
20050177635 Schmidt et al. Aug 2005 A1
20050181835 Lau et al. Aug 2005 A1
20050228680 Malik Oct 2005 A1
20050238153 Chevalier Oct 2005 A1
20050240659 Taylor Oct 2005 A1
20050243977 Creamer et al. Nov 2005 A1
20050246176 Creamer et al. Nov 2005 A1
20060008073 Yoshizawa et al. Jan 2006 A1
20060015467 Morken et al. Jan 2006 A1
20060047666 Bedi et al. Mar 2006 A1
20060067506 Flockhart et al. Mar 2006 A1
20060129638 Deakin Jun 2006 A1
20060143007 Koh et al. Jun 2006 A1
20060168334 Potti et al. Jul 2006 A1
20060203979 Jennings Sep 2006 A1
20060209695 Archer et al. Sep 2006 A1
20060212865 Vincent et al. Sep 2006 A1
20060215824 Mitby et al. Sep 2006 A1
20060217823 Hussey Sep 2006 A1
20060217978 Mitby et al. Sep 2006 A1
20060222166 Ramakrishna et al. Oct 2006 A1
20060256816 Yarlagadda et al. Nov 2006 A1
20060262915 Marascio et al. Nov 2006 A1
20060285489 Francisco et al. Dec 2006 A1
20070002744 Mewhinney et al. Jan 2007 A1
20070036143 Alt et al. Feb 2007 A1
20070050306 McQueen Mar 2007 A1
20070070906 Thakur Mar 2007 A1
20070070980 Phelps et al. Mar 2007 A1
20070071223 Lee et al. Mar 2007 A1
20070074174 Thornton Mar 2007 A1
20070121651 Casey et al. May 2007 A1
20070127691 Lert Jun 2007 A1
20070127703 Siminoff Jun 2007 A1
20070130260 Weintraub et al. Jun 2007 A1
20070133771 Stifelman et al. Jun 2007 A1
20070153711 Dykas et al. Jul 2007 A1
20070167170 Fitchett et al. Jul 2007 A1
20070192629 Saito Aug 2007 A1
20070208862 Fox et al. Sep 2007 A1
20070242626 Altberg et al. Oct 2007 A1
20070265073 Novi et al. Nov 2007 A1
20070286180 Marquette et al. Dec 2007 A1
20070291905 Halliday et al. Dec 2007 A1
20070293200 Roundtree et al. Dec 2007 A1
20070295803 Levine et al. Dec 2007 A1
20080005275 Overton et al. Jan 2008 A1
20080025320 Bangalore et al. Jan 2008 A1
20080037715 Prozeniuk et al. Feb 2008 A1
20080037746 Dufrene et al. Feb 2008 A1
20080040484 Yardley Feb 2008 A1
20080052395 Wright et al. Feb 2008 A1
20080091843 Kulkarni Apr 2008 A1
20080101571 Harlow et al. May 2008 A1
20080104348 Kabzinski et al. May 2008 A1
20080134049 Gupta et al. Jun 2008 A1
20080139166 Agarwal et al. Jun 2008 A1
20080146268 Gandhi et al. Jun 2008 A1
20080152101 Griggs Jun 2008 A1
20080154601 Stifelman et al. Jun 2008 A1
20080155029 Helbling et al. Jun 2008 A1
20080162482 Ahern et al. Jul 2008 A1
20080165708 Moore et al. Jul 2008 A1
20080177883 Hanai et al. Jul 2008 A1
20080209050 Li Aug 2008 A1
20080222656 Lyman Sep 2008 A1
20080232574 Baluja et al. Sep 2008 A1
20080235230 Maes Sep 2008 A1
20080256224 Kaji et al. Oct 2008 A1
20080275741 Loeffen Nov 2008 A1
20080310599 Purnadi et al. Dec 2008 A1
20080313318 Vermeulen et al. Dec 2008 A1
20080316931 Qiu et al. Dec 2008 A1
20080317222 Griggs et al. Dec 2008 A1
20090046838 Andreasson Feb 2009 A1
20090052437 Taylor et al. Feb 2009 A1
20090052641 Taylor et al. Feb 2009 A1
20090074159 Goldfarb et al. Mar 2009 A1
20090075684 Cheng et al. Mar 2009 A1
20090083155 Tudor et al. Mar 2009 A1
20090089165 Sweeney Apr 2009 A1
20090089699 Saha et al. Apr 2009 A1
20090093250 Jackson et al. Apr 2009 A1
20090125608 Werth et al. May 2009 A1
20090129573 Gavan et al. May 2009 A1
20090136011 Goel May 2009 A1
20090171659 Pearce et al. Jul 2009 A1
20090171669 Engelsma et al. Jul 2009 A1
20090171752 Galvin et al. Jul 2009 A1
20090217293 Wolber et al. Aug 2009 A1
20090220057 Waters Sep 2009 A1
20090221310 Chen et al. Sep 2009 A1
20090222341 Belwadi et al. Sep 2009 A1
20090225748 Taylor Sep 2009 A1
20090225763 Forsberg et al. Sep 2009 A1
20090232289 Drucker et al. Sep 2009 A1
20090235349 Lai et al. Sep 2009 A1
20090252159 Lawson et al. Oct 2009 A1
20090276771 Nickolov et al. Nov 2009 A1
20090288165 Qiu et al. Nov 2009 A1
20090300194 Ogasawara Dec 2009 A1
20090316687 Kruppa Dec 2009 A1
20090318112 Vasten Dec 2009 A1
20100037204 Lin et al. Feb 2010 A1
20100070424 Monk Mar 2010 A1
20100082513 Liu Apr 2010 A1
20100087215 Gu et al. Apr 2010 A1
20100088187 Courtney et al. Apr 2010 A1
20100088698 Krishnamurthy Apr 2010 A1
20100115041 Hawkins et al. May 2010 A1
20100142516 Lawson et al. Jun 2010 A1
20100150139 Lawson et al. Jun 2010 A1
20100167689 Sepehri-Nik et al. Jul 2010 A1
20100188979 Thubert et al. Jul 2010 A1
20100191915 Spencer Jul 2010 A1
20100208881 Kawamura Aug 2010 A1
20100217837 Ansari et al. Aug 2010 A1
20100217982 Brown et al. Aug 2010 A1
20100232594 Lawson et al. Sep 2010 A1
20100235539 Carter et al. Sep 2010 A1
20100251329 Wei Sep 2010 A1
20100251340 Martin et al. Sep 2010 A1
20100281108 Cohen Nov 2010 A1
20110029882 Jaisinghani Feb 2011 A1
20110053555 Cai et al. Mar 2011 A1
20110078278 Cui et al. Mar 2011 A1
20110081008 Lawson et al. Apr 2011 A1
20110083179 Lawson et al. Apr 2011 A1
20110096673 Stevenson et al. Apr 2011 A1
20110110366 Moore et al. May 2011 A1
20110131293 Mori Jun 2011 A1
20110167172 Roach et al. Jul 2011 A1
20110170505 Rajasekar et al. Jul 2011 A1
20110176537 Lawson et al. Jul 2011 A1
20110211679 Mezhibovsky et al. Sep 2011 A1
20110251921 Kassaei et al. Oct 2011 A1
20110253693 Lyons et al. Oct 2011 A1
20110255675 Jasper et al. Oct 2011 A1
20110265172 Sharma et al. Oct 2011 A1
20110267985 Wilkinson et al. Nov 2011 A1
20110276892 Jensen-Horne et al. Nov 2011 A1
20110276951 Jain Nov 2011 A1
20110280390 Lawson et al. Nov 2011 A1
20110283259 Lawson et al. Nov 2011 A1
20110289126 Aikas et al. Nov 2011 A1
20110299672 Chiu et al. Dec 2011 A1
20110320449 Gudlavenkatasiva Dec 2011 A1
20110320550 Lawson et al. Dec 2011 A1
20120000903 Baarman et al. Jan 2012 A1
20120017222 May Jan 2012 A1
20120036574 Heithcock et al. Feb 2012 A1
20120039202 Song Feb 2012 A1
20120079066 Li et al. Mar 2012 A1
20120114112 Rauschenberger et al. May 2012 A1
20120149404 Beattie et al. Jun 2012 A1
20120173610 Bleau et al. Jul 2012 A1
20120198004 Watte Aug 2012 A1
20120201238 Lawson et al. Aug 2012 A1
20120208495 Lawson et al. Aug 2012 A1
20120226579 Ha et al. Sep 2012 A1
20120239757 Firstenberg et al. Sep 2012 A1
20120281536 Gell et al. Nov 2012 A1
20120288082 Segall Nov 2012 A1
20120290706 Lin et al. Nov 2012 A1
20120304245 Lawson et al. Nov 2012 A1
20120304275 Ji et al. Nov 2012 A1
20120316809 Egolf et al. Dec 2012 A1
20130029629 Lindholm et al. Jan 2013 A1
20130054684 Brazier et al. Feb 2013 A1
20130058262 Parreira Mar 2013 A1
20130156024 Burg Jun 2013 A1
20130212603 Cooke et al. Aug 2013 A1
20130244632 Spence et al. Sep 2013 A1
20140064467 Lawson et al. Mar 2014 A1
20140105372 Nowack et al. Apr 2014 A1
20140106704 Cooke et al. Apr 2014 A1
20140123187 Reisman May 2014 A1
20140153565 Lawson et al. Jun 2014 A1
20140185490 Holm et al. Jul 2014 A1
20140274086 Boerjesson et al. Sep 2014 A1
Foreign Referenced Citations (19)
Number Date Country
1684587 Mar 1971 DE
0282126 Sep 1988 EP
1464418 Oct 2004 EP
1522922 Apr 2005 EP
1770586 Apr 2007 EP
2134107 Sep 1999 ES
10294788 Apr 1998 JP
2004166000 Jun 2004 JP
2004220118 Aug 2004 JP
2006319914 Nov 2006 JP
9732448 Sep 1997 WO
02087804 Nov 2002 WO
2006037492 Apr 2006 WO
2009018489 Feb 2009 WO
2009124223 Oct 2009 WO
2010037064 Apr 2010 WO
2010040010 Apr 2010 WO
2010101935 Sep 2010 WO
2011091085 Jul 2011 WO
Non-Patent Literature Citations (2)
Entry
Complaint for Patent Infringement, Telinit Technologies, LLC v. Twilio Inc., dated Oct. 12, 2012.
RFC 3986: Uniform Resource Identifier (URI): Generic Syntax; T. Berners-Lee, R. Fielding, L. Masinter; Jan. 2005; The Internet Society.
Related Publications (1)
Number Date Country
20150131444 A1 May 2015 US
Provisional Applications (1)
Number Date Country
61902985 Nov 2013 US