The present application generally relates to a text messaging service or platform, which provides a scalable way to conduct personalized text messaging campaigns aimed at target audiences, using distributed workloads and optimized workflows. More specifically, embodiments of the present invention relate to techniques for integrating personalized videos and video-based stories with a text messaging service in a scalable way, without sacrificing quality control and uniformity in messaging.
People have long used email to communicate for both personal and business purposes. However, as computing devices—such as mobile phones, tablet computers, laptops, and similar devices—have become smaller, more portable, and more powerful in terms of computation and communication capabilities, people have increasingly shifted to text messaging as a preferred mode of communication in their business endeavors and personal affairs. As compared to email, text messaging is both simpler and more convenient. As text messaging has grown in popularity, a variety of text messaging applications and services have been developed to enable people and their organizations to conduct text messaging campaigns. For instance, a variety of text messaging services provide the ability to leverage a database of contacts to communicate a message, in bulk, to those contacts, where the message may, for example, relate to the marketing of a product or service. In other instances, retailers may use text messaging services to communicate information about special offers, sale events, and so forth. Educational organizations may use text messaging services to communicate information to students, staff, and other stakeholders. Restaurants and professional service providers (e.g., doctors, dentists, lawyers, and others) may use text messaging services to contact customers and clients, for example, to provide reminders about reservations, meetings and/or appointments. These are just a few examples of the many use cases for text messaging services.
One of the most common features of these text messaging services is the ability to leverage an existing database of contacts in order to communicate a message, in bulk, to all contacts, or large sets of contacts. For instance, many of these online services provide some level of integration with an enterprise's existing database of contacts. In some instances, a software-based data uploading tool may allow an enterprise to upload contact information from a local database to cloud-based storage, where the contact information can then be leveraged by the online text messaging service. In other instances, an application programming interface (API) provided by the text messaging service may allow the text messaging service to access contact information and related data stored in a local or existing cloud-based database. In either case, the text messaging service may provide a web-based user interface, via which an end-user can specify text for a text message that is then communicated, for example, as a broadcast text message, to some large number of contacts.
While this approach advantageously provides a way to quickly communicate information to a large number of people, this approach has several drawbacks. First, many recipients of such messages simply ignore these messages, believing the messages to be spam or junk. Second, this approach to broadcasting messages to large target audiences makes it impractical, if not impossible, to have personalized text-based conversations. By way of example, if one person (e.g., the message sender) generates a text message that is then broadcast to ten thousand people (e.g., message recipients), even if a small percentage of the message recipients respond with a reply to the original message, it is nearly impossible for the message sender to then follow up with a subsequent reply message in a timely manner, for each response that has been received.
Embodiments of the present invention are illustrated by way of example and not limitation in the figures of the accompanying drawings, in which:
Described herein is a text messaging service that facilitates personalized text-based conversations at scale, with messages that include video clips and/or video-based stories that may be personalized for the message recipient. Consistent with some embodiments, the workflows for creating the personalized content may be optimized, for example, by efficiently assigning and presenting individual contacts of a target audience (e.g., message recipients) to agent end-users in a way that reduces the overall time and effort required by each agent end-user to generate the personalized content. Furthermore, in some embodiments, the text messaging service has various automated quality control features integrated with the content creation workflows, to ensure that outbound messages, created by agent end-users, comply with quality control requirements, established by an admin end-user. In the following description, for purposes of explanation, numerous specific details and features are set forth in order to provide a thorough understanding of the various aspects of different embodiments of the present invention. It will be evident, however, to one skilled in the art, that the present invention may be practiced and/or implemented with varying combinations of the many details and features presented herein.
As described herein, the inventive subject matter represents an improvement to a text messaging platform or service, such as that described in U.S. patent application Ser. No. 15/671,934, with title, “Managing Agent Relationships with a Set of Contacts via Templated Messages” (hereafter, “the '934 application”). While the inventive subject matter presented herein is an improvement to the systems and techniques described in the '934 application, those skilled in the relevant art will readily recognize that the inventive subject matter described herein may also be implemented and integrated with a wide variety of messaging services beyond those described in the aforementioned '934 application. Specifically, while the various embodiments described and illustrated herein are generally described in the context of text messaging services, which have conventionally operated over public, wireless communication networks (e.g., mobile telephone networks) using standardized protocols, such as Short Messaging Service (SMS), and/or Multimedia Messaging Service (MMS), those skilled in the art will recognize that other embodiments of the present invention could easily be implemented and integrated with any of a wide variety of other messaging services, including various instant messaging or chat services, which conventionally operate over public networks, such as the Internet.
As shown in
While a variety of information may be provided by the admin end-user 102 when establishing the text messaging campaign, for the sake of simplicity, three specific elements of a text messaging campaign are shown in
As described in greater detail below, in many instances, the content generated by the admin end-user will be in the form of templated scripts. A templated script is a script that references one or more variables, which will be resolved by accessing a value for the variable. By way of example, a templated text message script may read, in part, as follows, “Hi <CONTACT FIRST NAME>! This is <AGENT FIRST NAME> from <COMPANY NAME> . . . ,” where the bold text enclosed by the greater than and less than symbols (e.g., “< . . . >”) represent variable names. The templated scripts are processed to resolve the referenced variables before the resulting script is presented to an agent end-user for communicating to a contact as a text message. As described in greater detail below, in addition to templated text message scripts, in some instances, templated video scripts are used to convey a message to be spoken by an agent end-user when the agent end-user is recording a personalized video clip to be communicated to a contact, or recording a personalized video clip that will be prepended to a video-based story.
In addition to text messages 202, another type of content involves what is referred to herein as video clips 204. With some embodiments, video clips 204 are communicated as Multimedia Message Service (MMS) message attachments, after being transcoded by the text message service. Like text messages 202, video clips may be static or templated. A static video clip is a video clip that is recorded by the admin end-user, and then associated with a text message. Accordingly, when the agent end-user sends the associated text message to a contact, the video clip created by the admin end-user will be communicated to the contact with the text message. In contrast, a templated video clip is a video clip recorded by the agent end-user who is prompted to speak or recite a message, derived from a templated video script, when the agent end-user is recording a video clip to be communicated to one or more contacts. For instance, when the agent end-user is recording the video clip to be communicated to a contact, the agent end-user will read the video script that resulted from processing the templated video script specified by the admin end-user. The video script is derived from a templated video script by resolving any variable names referenced in the templated video script. By using a templated video script, the resulting video clip can be customized and/or personalized when recorded by the agent end-user. For example, the spoken message conveyed by the agent end-user may include a greeting that includes the name of the agent and the name of the contact or message recipient, among other information. A wide variety of other variables or fields—including system defined variables or fields, as well as custom defined variables or fields—may also be used to customize and/or personalized the video script, and thus, the video clip recorded by an agent end-user. With some embodiments, video clips may be subject to certain requirements-such as a maximum length (e.g., play back duration) and/or file size. As shown in
Finally, the third type of content shown in
Consistent with some embodiments of the present invention, when establishing the text messaging campaign, the admin end-user can specify that a story is to be personalized for the message recipient, by having the agent end-user record a video clip based on a video script derived from a templated video script. For instance, the admin end-user can create a templated video script for a video clip that is to be recorded by an agent end-user. Subsequent to the agent end-user recording the video clip, the video clip is communicated to the text messaging service where it is prepended to the story before being communicated to a contact. Other aspects of video-based stories are described in greater detail below in connection with descriptions of several of the various figures.
As shown in
In comparison with conventional text messaging services, embodiments of the present inventive subject matter described herein advantageously distribute the workload involved in sending, receiving, and replying to text messages, to one or more agent end-users. For instance, by providing one or more admin end-users the ability to create and manage a text messaging campaign, while designating various agent end-users to help in the actual conducting of the text messaging campaign, the admin end-user can maintain control over the messaging—specifically, the content or substance of the messages being communicated—while distributing the actual workload involved in sending the messages, receiving and processing replies to the messages, and potentially following up with further reply messages. In this way, a text messaging campaign can be targeted to an extremely large audience (e.g., tens, if not hundreds, of thousands of contacts), while both maintaining some uniformity over the content, and being able to conduct the campaign and reach a large audience in a short amount of time.
Consistent with some embodiments of the invention, and as described in greater detail below, the text messaging service utilizes various optimization algorithms to increase the efficiency of conducting a text messaging campaign. For example, with some embodiments, when contacts are assigned to individual agent end-users, all contacts who are to receive the same personalized video clip may be grouped together and assigned to the same agent end-user. Accordingly, if a templated video script uses a variable name corresponding to the first name of a contact, the agent end-user is able to record a single video clip, based on one video script, which can then be sent to all contacts who, for example, share the same first name.
Consistent with some embodiments of the invention, and as described in greater detail below, the text messaging service uses quality assurance logic to ensure that any content created by an agent end-user satisfies various quality control metrics. By way of example, in some instances, the admin end-user can specify a configuration setting for a text messaging campaign, or for a specific content item (e.g., personalized video clip, or video clip for a story), such that the configuration setting indicates that a content item created by the agent end-user is to be approved by the admin end-user prior to the content item being communicated to a contact. Accordingly, after an agent end-user records a personalized video clip for a specific contact, the agent end-user may interact with the user interface, for example, by selecting a button or other GUI element that causes the video file for the video clip to be uploaded or communicated to the text messaging service. When received at the text messaging service, the video clip may be processed in accordance with any configuration settings established by the admin end-user. For example, depending upon the specific configuration settings, the video clip may be directed to a review queue, where it is held or stored until approved by an admin end-user. The admin end-user would then interact with a user interface of the admin portal to play back and review the video clip, before approving or rejecting the video clip. Only upon the approval of the video clip by the admin end-user would the video clip be added to a send queue for subsequent processing and communication to the intended message recipient. As described in greater detail below, in addition to a manual review and approval process, content items may be subjected to a variety of automated analytical processing for purposes of ensuring quality. Other aspects and advantages of the inventive subject matter described herein are set forth in connection with the description of the various figures that follow.
Consistent with some embodiments, the text messaging service 300 is role-based such that each end-user is assigned a role, and based on their respective role, the user interfaces presented to the end-user, and the interactions that the end-user will have with the text messaging service, will vary. In particular, end-users with administrative access—referred to herein as admin end-users 302—will interact with the text messaging service 300 via an admin portal 308. Via the various user interfaces presented in connection with the admin portal 308, admin end-users will provide or specify information to establish text messaging campaigns and participate in overseeing and managing active text messaging campaigns. For example, by interacting with various user interfaces of the admin portal 308, the admin end-user can specify one or more agent end-users 304 to be included in a text messaging campaign. In addition, the admin end-user may specify the target audience (e.g., contacts) to whom text messages are to be communicated, by the agent end-user(s), as part of a workflow of a text messaging campaign. As shown in
Consistent with some embodiments, when an admin end-user 302 is establishing a text messaging campaign, the admin end-user 302 will specify a particular goal or objective, which may be pre-defined or custom—that is, created by the admin end-user. By way of example, some predefined goals may include, but are not limited to: communicating an invitation to an event, recruiting staff and/or volunteer members, engaging with a contact, sharing a link (e.g., a hyperlink), or surveying a group of contacts. Each of the several predefined goal types may be associated with one or more workflows, with each workflow having one or more templated text scripts, for deriving text messages, and having one or more templated video scripts, for deriving video scripts for use by agent end-users when recording personalized video clips for contacts. In some instances, by simply specifying a particular type of goal for a text messaging campaign, the admin end-user 302 is also establishing or specifying for the text messaging campaign a set of workflows, and any templated text scripts and templated video scripts that are associated with the workflows. While each goal type may be associated with predefined workflows and templated scripts, the text messaging service 300 also supports fully customizable workflows and customizable templated scripts, for use with any goal, whether the goal is a predefined goal or a custom goal. As shown in
In addition to establishing workflows 318, templated text scripts 320, and templated video scripts 322, an admin end-user may interact with a studio application 326 to create customized stories 332, video clips 334, and/or graphics and images 336, which are stored as part of a media library 330 in a database 328. The studio application 326 is a content creation application that allows an admin end-user to upload or create various media files (e.g., video clips, photograph, graphics, images, animations, audio clips, and so forth), then edit and arrange the media files to create a story. Consistent with some embodiments, a story may be communicated to a message recipient or contact, as a link in a text message. When the link is selected, a request for the story is sent to the text messaging service at which the story is hosted, and the story is then communicated to the computing device of the contact, where it can be played back via a video player application.
Consistent with some embodiments, an admin end-user can create a templated video script from which a video script can be derived. The video script can be presented to an agent end-user with instructions for preparing a personalized video clip for a contact, where the video clip will be prepended to a story before the link to the story is communicated in a text message to the contact. Other aspects and features related to stories are described in greater detail below in connection with the description of
Consistent with some embodiments, workflows that are part of a text messaging campaign may have set times during which the workflows are considered active. Accordingly, during an active workflow, agent end-users access the text message service through the agent portal 338, to perform various tasks that are defined by an active workflow. These tasks may specifically involve communicating a text message to one or more contacts, where the text message may optionally include a personalized video clip and/or a story. For example, if the workflow is part of a text messaging campaign that calls for sending a person-to-person text message, the agent end-user may be presented with a user interface that includes a first text message, derived from a templated text message script, along with a video script, derived from a templated video script. The agent end-user may be prompted to record a video clip, using the video script, to be communicated to a contact with the text message.
With some embodiments, the agent workflow optimizer 340 performs various optimization tasks to increase the efficiency of performing various tasks. For example, the agent workflow optimizer 340 allows an agent end-user to record a single personalized video clip for multiple contacts or message recipients, in some instances. For example, if a templated video script that includes one or more references to one or more variable names, results in the exact same video script for more than one contact assigned to an agent end-user, then the agent workflow optimizer will optimize the task of creating the personalized video clip. For example, if a templated video script includes a variable referencing the first name of a contact (e.g., <CONTACT FIRST NAME>), then the video script derived for a contact with the name, “John Smith,” will be identical to the video script that is derived from the templated video script for a contact with the name, “John Johnson.” In fact, if the templated video script includes only a reference to the contact's first name, and no other references to other variables, then the resulting video script will be the same for all contacts who share the same first name. As such, in this particular example, the agent workflow optimizer 340 will generate a user interface prompting the agent end-user to record a single video clip that will be communicated to all contacts who share the same first name. This has the effect of significantly reducing the number of personalized video clips that need to be recorded by an agent end-user—particularly when the templated video script results in the same video script for large numbers of contacts. When an agent end-user is assigned a large number of contacts, this optimization technique can save a significant amount of time.
After an agent end-user has recorded a personalized video clip, the video clip will be communicated over a network 306 to the text messaging service 300 before the video clip and an associated text message are sent to a contact. Consistent with some embodiments, when a personalized video clip is received at the text messaging service 300 and before it is communicated to a contact, the video clip is subjected to a quality assurance process, for example, by the quality assurance logic 340. As described in greater detail below in connection with the description of
The example user interface of
With some embodiments, by specifying an event day and time, the text messaging campaign may automatically establish a schedule for one or more workflows. In this case, a goal calendar 410 is shown in the user interface with reference 410. By way of example, the schedule may indicate the days during which certain workflows of the text messaging campaign are to be active. For instance, an initial workflow may involve communicating an initial text message to the contacts, such that the initial text message is to be sent to the contacts over some first duration of time. Then, subsequent to the initial text message being sent, a follow-up or reminder workflow may be active for a second period of time, during which follow-up text messages are to be communicated to the contacts. Accordingly, when the admin end-user is providing information for the various workflows, the admin end-user may specify specific templated text messaging scripts for various steps to be undertaken during each workflow. In addition, the admin end-user may require that personalized video clips, or a personalized story be communicated with a particular text message. In such a case, the admin end-user may generate or select a pre-existing templated video script for use in deriving a video script with a message to be recorded by the agent end-user for each contact.
Finally, as shown in
Although not presented in
With some embodiments, when the goal type is selected, one or more workflows and templated scripts are automatically designated for use with the text messaging campaign. Accordingly, one of the next steps undertaken by the admin end-user when establishing a text messaging campaign may be to review and/or edit a templated script that is part of a workflow associated with the selected goal type.
If the admin end-user prefers to edit the text of the templated text message script shown in the text box 502, the admin end-user may select the “EDIT” button 506, and in response, the admin portal 308 will cause a user interface 600 to be presented, such as that shown in
As shown in
Referring again to
As shown in
As shown with reference number 708, with some embodiments, the text messaging service performs a script analysis by analyzing the text of the templated script, including any variable references included within the text 702, to assess whether various rules are satisfied. The rules themselves may be configured via a separate user interface (not shown) of the text messaging service. As an example, a rule may specify a minimum or maximum length of the message (e.g., measured in word count). Additionally, a rule may be processed to confirm that the variable names included in the templated video script 702 are consistent with other settings for the script. Thus, if the admin end-user has selected the check box with reference number 706, the script analysis may check to ensure that the templated video script includes a reference to the variable name for the contact, and/or the agent, and so forth. After the admin end-user has finalized the templated video script 702, the admin end-user can select the “SAVE” button 710 to return to the user interface with reference number 400.
Referring now to
The button with label, “STORY LIBRARY” 804, when selected by the admin end-user, will cause the admin portal 308 to present a user interface 900 (
As shown with reference number 910, the admin end-user may select the “EDIT” button 910 to edit the story and its associated parameters and preferences, prior to selecting the story for association with a templated text message script. Similarly, if none of the stories in the story library are suitable for use in the text messaging campaign that is being established by the admin end-user, the admin end-user can select the button 912 with label, “NEW STORY” to create a new story.
Referring again to
As shown in the example user interface 1000, a text input box 1006 prompts the admin end-user to enter or provide a name for the story, and a second input box 1008 prompts the admin end-user to provide or select a profile with which the story will be associated. For example, with some embodiments, an admin end-user may conduct text messaging campaigns for more than one group (e.g., different departments within a single enterprise), or, for more than one enterprise (e.g., different companies, or organizations). Accordingly, the text messaging service provides support for this by providing an end-user with the ability to create different accounts or profiles.
When creating the story, the admin end-user is prompted to provide parameters and preferences for a call-to-action. Here, a call-to-action is some action that a contact is being persuaded to take, as part of the text messaging campaign. Generally, the call-to-action will be related to the objective or goal of the text messaging campaign, as set by the admin end-user. By way of example, if the goal of the text messaging campaign involves persuading contacts to attend an event, the call-to-action as included with the story may be a link to a website or webpage via which a contact can register to attend the event. Accordingly, as shown in the example user interface 1000, the admin end-user is prompted to provide both a label 1010 (e.g., “RSVP HERE!”) and a corresponding link, or uniform resource locator (URL) 1012. As shown in the story preview portion 1020 of the example user interface 1000, a button 1022, derived from the input provided by the admin end-user to the call-to-action parameters (e.g., input boxes 1010 and 1012) is shown in the preview 1020 as being overlayed on the video portion of the story. Finally, the preview shows a video page title 1024, derived from input 1014 provided by the admin end-user as prompted by the input box 1014 for designating a video page title.
Consistent with some embodiments, the story parameters and preferences may include one or more settings relating to agent personalization for the story. For instance, as shown with reference number 1016, the example user interface 1000 allows the admin end-user to designate an agent personalization setting that will determine if an agent end-user is 1) required to personalize the story by adding a video clip to be prepended to the story, 2) may optionally personalize the story, or 3) is not allowed to personalize the story. When the admin end-user selects an option requiring or allowing each agent end-user to personalize the story, the admin end-user may also specify a quality control requirement for any video clip generated by an agent end-user and uploaded to the text messaging service. For instance, in the example user interface 1000, the check box associated with the label, “REQUIRE ADMIN APPROVAL BEFORE SENDING” 1018 indicates that video clips generated by the agent end-users are to be approved by an admin end-user prior to those video clips being communicated to a contact as part of the text messaging campaign. Although not shown in
When an admin end-user specifies that an agent end-user is required to, or may optionally (e.g., at the discretion of the agent end-user), personalize a story by uploading a video clip to be prepended to the story, the admin end-user may provide a templated video script from which the agent end-user is to generate the personalized video clip.
Consistent with some embodiments, the mobile application that allows an agent end-user to record a video clip may utilize one or more automated processes to ensure the quality of the video clip is sufficient. By way of example, the application may detect when the lighting level is low, and in response, prompt the agent end-user to relocate or modify his environment to improve the lighting, and thus, the quality of recorded video. Similarly, the audio may be analyzed, and when the audio level is too low, or there is too much noise, the agent end-user may be prompted to make changes to improve the audio recording for the video clip. With some embodiments, the text messaging service may also utilize various automated processes to ensure that a video clip satisfies one or more quality requirements.
As illustrated in
Consistent with some embodiments, when an admin end-user has designated several agent end-users to facilitate a text messaging campaign, the agent end-user optimizer 340 may intelligently assign contacts to the individual agent end-users, for example, by grouping contacts by shared video scripts. For instance, when a video script based on a templated video script is the same for some group of contacts, then those contacts may be grouped together for purposes of assignment to an agent end-user. This reduces the overall number of personalized video clips that need to be recorded by any individual agent end-users, as well as the group of agent end-users. By way of example, if a templated video script uses a variable for the first name of a contact, it will be more efficient to assign all contacts with the same first name to the same agent end-user, so that agent end-user can record a single personalized video script for those contacts. With some embodiments, a separate data field for storing a representation of a phonetic pronunciation of a contact's name may be created. Accordingly, those contacts whose name is pronounced the same way, regardless of the spelling of the name, may be grouped together for purposes of prompting an agent end-user to record a personalized video clip
In addition to designating agent end-users, the admin end-user may designate a set of contacts as a target audience for the text messaging campaign. Via the user interface presented to the admin end-user, the admin end-user will select or otherwise provide a templated text script from which a text message will be derived. Also via the user interface, the admin end-user may optionally select or otherwise specify a templated video script from which a video script is to be derived. The video script may be presented to one or more agent end-users when prompting the agent end-user to record a personalized video clip for a contact. Finally, at the method operation with reference number 1402, the admin end-user may specify a message format—specifically for the personalized video clip to be recorded. For instance, in some cases, the admin end-user may indicate via the user interface that a personalized video clip recorded by an agent end-user is to be communicated to a contact as an MMS attachment, such that the video clip will automatically play back on the messaging application of the message recipient. Alternatively, the admin end-user may specify that the personalized video clip recorded by the agent end-user is to be prepended to an existing video-based story, such that a link to the video-based story is communicated to the contact in a text-based message.
At method operation 1404, after the admin end-user has established the text messaging campaign, the text messaging service will process the templated text message script to derive a text message for a first contact. The text messaging service will also process the templated video script to derive or generate a video script for a first contact. In both cases, processing the templated scripts involves resolving any variable names that are referenced within a respective script, so that the resulting script includes a value for each referenced variable.
At method operation 1406, the text messaging service presents to an agent end-user a user interface that includes the text message addressed to the first contact. In addition, the user interface presented to the agent end-user includes the video script and a control interface to operate a video recording device integral with the agent end-user's computing device. The user interface prompts the agent end-user to record a video clip with a spoken message that is based on the video script presented in the user interface.
Finally, at method operation 1408, the recorded video clip is communicated to the text messaging service when the agent end-user selects a button or other similar GUI element presented on the user interface. The method operations 1404, 1406 and 1408 are then repeated for a second contact, or group of contacts. Note, in some instances, the method operations 1404, 1406 and 1408 are executed for a group of contacts that share in common the same video script. For example, when multiple contacts share the same first name, the video script presented to an agent end-user for those multiple contacts may be the same. In such an instance, a single, personalized video clip recorded by the agent end-user may be communicated to the text messaging service for subsequent communication to multiple contacts who, for example, may share the same name, and so forth.
Turning now to
At method operation 1502 a personalized video clip that was previously recorded by an agent end-user is received at the text messaging service. At method operation 1504, a quality assurance check is done to determine whether the agent end-user who recorded the video clip is a trusted agent end-user. For example, consistent with some embodiments, each agent end-user may have an associated trust score. Therefore, in some instances, a check is done to determine whether the agent end-user's trust score exceeds some threshold set by the admin end-user. In other instances, an agent end-user's trust score may be automatically set when the end-user is designated as an agent for the text messaging campaign, by virtue of some relationship to the admin end-user. By way of example, if the admin end-user and the agent end-user each have an email address with the same domain name, the trust score for the agent end-user may be set automatically to indicate that the agent end-user is a trusted agent end-user.
If, at method operation 1504, the text messaging service determines that the agent end-user from whom video clip was received is not a trusted agent end-user, then the video clip may be directed to a review queue 1510, where it will be held/stored until such time as an admin end-user has reviewed (e.g., played back) and approved the video clip for sending to the intended contact or message recipient. Alternatively, if the text messaging service determines that the agent end-user from whom the video clip was received is a trusted agent end-user, then the video clip may be subjected to one or more automated quality assurance checks.
At method operation 1506, the video clip may be provided as input to any one of a plurality of software-based, automated tools, for determining that the video clip satisfies one or more quality assurance requirements. By way of example, with some embodiments, the video clip may be processed using a pre-trained machine learned model that outputs a score indicating a probability that images within the video clip include objectionable content (e.g., nudity, obscene hand gestures, etc.) With some embodiments, the video clip may be analyzed to detect the presentation of text within one or more frames of the video clip. When text is recognized, an optical character recognition (OCR) detection process may be performed to recognize words from the text. These words can then be compared to a list of objectionable words.
With some embodiments, the audio portion of the video clip may be subjected to an audio-to-text translation tool. The text resulting from the tool is then compared with the text of the video script to determine whether there is a significant difference between what the agent end-user was prompted to speak, and what text was detected by the automated tool. Similarly, the text output by the audio to text translation tool may be compared with a list of objectionable words.
At method operation 1508, output from the one or more automated content analyses and testing procedures may be compared against one or more relevant requirements. If, for example, a probability score representing a likelihood that an image within the video is objectionable exceeds some threshold, then the relevant video clip may be directed to the review queue for review and approval by the admin end-user. Similarly, if one or more words spoken by the agent end-user, or detected as a result of an OCR process, is determined to be in a list of objectionable words, the relevant video clip may be directed to the review queue 1510.
If the quality assurance check determines that the video clip satisfies all requirements, the video clip may be further processed before being sent to an intended message recipient or contact. For instance, at method operation 1512, the text messaging service may determine that the video clip is to be sent as a personalized video clip, in which case the video clip is transcoded 1514 to ensure the resulting video clip satisfies any particular message protocol requirements associated with the communication channel over which the video clip will be communicated to the device of the contact. Finally, after transcoding the video clip, the video clip may be directed to a send queue 1516, where it is finally processed and communicated with an associated text message to a device of the intended message recipient.
If the video clip is intended as a personalized intro video clip for an existing video-based story, then the text messaging service will prepend the approved video clip to the existing story 1518, ensure that the text message includes a link to the story 1520, and add the associated text message to the send queue 1522, from which it will be communicated to the intended contact.
At step 1614, the text messaging service 1604 monitors the playback of the story at the client computing device, and if the entire video is played back or some substantial portion, the text messaging service 1604 logs an indication that the contact 1600 played and viewed the story. When the story is being played back on the client computing device of the contact 1604, a button or link, associated with a uniform resource locator (URL) as previously specified by the admin agent as part of the call-to-action, will be presented overlayed on the video that is being presented. When the contact selects the call-to-action button or link 1616, a request is communicated to the text messaging service. Again, this request is logged by the text messaging service 1618, and the action by the contact can later be used as targeting criteria—for example, to select all contacts associated with a particular workflow of a particular text messaging campaign who selected the link. In addition, the request received at the text messaging is processed, for example, by serving to the client computing device the requested resource, or redirecting the request to a service that can provide the resource.
As indicated by step 1620, this process (e.g., steps 1606 through 1618) are repeated for each contact assigned to a particular agent end-user. At step 1622, the text messaging service 1604 may analyze the log of activities for all contacts, or some group of contacts, associated with a text messaging campaign. For instance, an agent end-user may desire to send a follow-up message to all contacts who selected the link to the story, for example, as may have been presented in the initial text message of the text messaging. Accordingly, at step 1622, the text messaging service enables an agent end-user to select a group of contacts, based on previous interactions that the contact may have had with a story associated with a text message. At step 1624, the text messaging service 1604 may present the agent end-user with a user interface allowing the agent end-user to send a reply or follow-up message to one or more contacts, based on a contacts previous interaction with a story. At step 1626, the agent end-user may interact with the user interface to send a reply or follow-up text message to one or more contacts.
In various implementations, the operating system 1704 manages hardware resources and provides common services. The operating system 1704 includes, for example, a kernel 1720, services 1722, and drivers 1724. The kernel 1720 acts as an abstraction layer between the hardware and the other software layers, consistent with some embodiments. For example, the kernel 1720 provides memory management, processor management (e.g., scheduling), component management, networking, and security settings, among other functionality. The services 1722 can provide other common services for the other software layers. The drivers 1724 are responsible for controlling or interfacing with the underlying hardware, according to some embodiments. For instance, the drivers 1724 can include display drivers, camera drivers, BLUETOOTH® or BLUETOOTH® Low Energy drivers, flash memory drivers, serial communication drivers (e.g., Universal Serial Bus (USB) drivers), Wi-Fi® drivers, audio drivers, power management drivers, and so forth.
In some embodiments, the libraries 1706 provide a low-level common infrastructure utilized by the applications 1710. The libraries 1706 can include system libraries 1730 (e.g., C standard library) that can provide functions such as memory allocation functions, string manipulation functions, mathematic functions, and the like. In addition, the libraries 1706 can include API libraries 1732 such as media libraries (e.g., libraries to support presentation and manipulation of various media formats such as Moving Picture Experts Group-4 (MPEG4), Advanced Video Coding (H.264 or AVC), Moving Picture Experts Group Layer-3 (MP3), Advanced Audio Coding (AAC), Adaptive Multi-Rate (AMR) audio codec, Joint Photographic Experts Group (JPEG or JPG), or Portable Network Graphics (PNG)), graphics libraries (e.g., an OpenGL framework used to render in two dimensions (2D) and three dimensions (3D) in a graphic context on a display), database libraries (e.g., SQLite to provide various relational database functions), web libraries (e.g., WebKit to provide web browsing functionality), and the like. The libraries 1706 can also include a wide variety of other libraries 1734 to provide many other APIs to the applications 1710.
The frameworks 1708 provide a high-level common infrastructure that can be utilized by the applications 1710, according to some embodiments. For example, the frameworks 1708 provide various GUI functions, high-level resource management, high-level location services, and so forth. The frameworks 1708 can provide a broad spectrum of other APIs that can be utilized by the applications 1710, some of which may be specific to a particular operating system 1704 or platform.
In an example embodiment, the applications 1710 include a home application 1750, a contacts application 1752, a browser application 1754, a book reader application 1756, a location application 1758, a media application 1760, a messaging application 1762, a game application 1764, and a broad assortment of other applications, such as a third-party application 1766. According to some embodiments, the applications 1710 are programs that execute functions defined in the programs. Various programming languages can be employed to create one or more of the applications 1710, structured in a variety of manners, such as object-oriented programming languages (e.g., Objective-C, Java, or C++) or procedural programming languages (e.g., C or assembly language). In a specific example, the third-party application 1766 (e.g., an application developed using the ANDROID™ or IOS™ software development kit (SDK) by an entity other than the vendor of the particular platform) may be mobile software running on a mobile operating system such as IOS™, ANDROID™, WINDOWS® Phone, or another mobile operating system. In this example, the third-party application 866 can invoke the API calls 1712 provided by the operating system 1704 to facilitate functionality described herein.
The machine 1800 may include processors 1810, memory 1830, and I/O components 1850, which may be configured to communicate with each other such as via a bus 1802. In an example embodiment, the processors 1810 (e.g., a Central Processing Unit (CPU), a Reduced Instruction Set Computing (RISC) processor, a Complex Instruction Set Computing (CISC) processor, a Graphics Processing Unit (GPU), a Digital Signal Processor (DSP), an ASIC, a Radio-Frequency Integrated Circuit (RFIC), another processor, or any suitable combination thereof) may include, for example, a processor 1812 and a processor 1814 that may execute the instructions 1816. The term “processor” is intended to include multi-core processors that may comprise two or more independent processors (sometimes referred to as “cores”) that may execute instructions contemporaneously. Although
The memory 1830 may include a main memory 1832, a static memory 1834, and a storage unit 1836, all accessible to the processors 1810 such as via the bus 1802. The main memory 1830, the static memory 1834, and storage unit 1836 store the instructions 1816 embodying any one or more of the methodologies or functions described herein. The instructions 1816 may also reside, completely or partially, within the main memory 1832, within the static memory 1834, within the storage unit 1836, within at least one of the processors 1810 (e.g., within the processor's cache memory), or any suitable combination thereof, during execution thereof by the machine 1800.
The I/O components 1850 may include a wide variety of components to receive input, provide output, produce output, transmit information, exchange information, capture measurements, and so on. The specific I/O components 1850 that are included in a particular machine will depend on the type of machine. For example, portable machines such as mobile phones will likely include a touch input device or other such input mechanisms, while a headless server machine will likely not include such a touch input device. It will be appreciated that the I/O components 1850 may include many other components that are not shown in
In further example embodiments, the I/O components 1850 may include biometric components 1856, motion components 1858, environmental components 1860, or position components 1862, among a wide array of other components. For example, the biometric components 1856 may include components to detect expressions (e.g., hand expressions, facial expressions, vocal expressions, body gestures, or eye tracking), measure bio-signals (e.g., blood pressure, heart rate, body temperature, perspiration, or brain waves), identify a person (e.g., voice identification, retinal identification, facial identification, fingerprint identification, or electroencephalogram-based identification), and the like. The motion components 1858 may include acceleration sensor components (e.g., accelerometer), gravitation sensor components, rotation sensor components (e.g., gyroscope), and so forth. The environmental components 1860 may include, for example, illumination sensor components (e.g., photometer), temperature sensor components (e.g., one or more thermometers that detect ambient temperature), humidity sensor components, pressure sensor components (e.g., barometer), acoustic sensor components (e.g., one or more microphones that detect background noise), proximity sensor components (e.g., infrared sensors that detect nearby objects), gas sensors (e.g., gas detection sensors to detection concentrations of hazardous gases for safety or to measure pollutants in the atmosphere), or other components that may provide indications, measurements, or signals corresponding to a surrounding physical environment. The position components 1862 may include location sensor components (e.g., a GPS receiver component), altitude sensor components (e.g., altimeters or barometers that detect air pressure from which altitude may be derived), orientation sensor components (e.g., magnetometers), and the like.
Communication may be implemented using a wide variety of technologies. The I/O components 1850 may include communication components 1864 operable to couple the machine 1800 to a network 1880 or devices 1870 via a coupling 1882 and a coupling 1872, respectively. For example, the communication components 1864 may include a network interface component or another suitable device to interface with the network 1880. In further examples, the communication components 1864 may include wired communication components, wireless communication components, cellular communication components, Near Field Communication (NFC) components, Bluetooth® components (e.g., Bluetooth® Low Energy), Wi-Fi® components, and other communication components to provide communication via other modalities. The devices 1870 may be another machine or any of a wide variety of peripheral devices (e.g., a peripheral device coupled via a USB).
Moreover, the communication components 1864 may detect identifiers or include components operable to detect identifiers. For example, the communication components 1864 may include Radio Frequency Identification (RFID) tag reader components, NFC smart tag detection components, optical reader components (e.g., an optical sensor to detect one-dimensional bar codes such as Universal Product Code (UPC) bar code, multi-dimensional bar codes such as Quick Response (QR) code, Aztec code, Data Matrix, Dataglyph, MaxiCode, PDF417, Ultra Code, UCC RSS-2D bar code, and other optical codes), or acoustic detection components (e.g., microphones to identify tagged audio signals). In addition, a variety of information may be derived via the communication components 1864, such as location via Internet Protocol (IP) geolocation, location via Wi-Fi® signal triangulation, location via detecting an NFC beacon signal that may indicate a particular location, and so forth.
The various memories (i.e., 1830, 1832, 1834, and/or memory of the processor(s) 1810) and/or storage unit 1836 may store one or more sets of instructions and data structures (e.g., software) embodying or utilized by any one or more of the methodologies or functions described herein. These instructions (e.g., the instructions 1816), when executed by processor(s) 1810, cause various operations to implement the disclosed embodiments.
As used herein, the terms “machine-storage medium,” “device-storage medium,” “computer-storage medium” mean the same thing and may be used interchangeably in this disclosure. The terms refer to a single or multiple storage devices and/or media (e.g., a centralized or distributed database, and/or associated caches and servers) that store executable instructions and/or data. The terms shall accordingly be taken to include, but not be limited to, solid-state memories, and optical and magnetic media, including memory internal or external to processors. Specific examples of machine-storage media, computer-storage media and/or device-storage media include non-volatile memory, including by way of example semiconductor memory devices, e.g., erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), FPGA, and flash memory devices; magnetic disks such as internal hard disks and removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks. The terms “machine-storage media,” “computer-storage media,” and “device-storage media” specifically exclude carrier waves, modulated data signals, and other such media, at least some of which are covered under the term “signal medium” discussed below.
In various example embodiments, one or more portions of the network 1880 may be an ad hoc network, an intranet, an extranet, a VPN, a LAN, a WLAN, a WAN, a WWAN, a MAN, the Internet, a portion of the Internet, a portion of the PSTN, a plain old telephone service (POTS) network, a cellular telephone network, a wireless network, a Wi-Fi® network, another type of network, or a combination of two or more such networks. For example, the network 1880 or a portion of the network 1880 may include a wireless or cellular network, and the coupling 1882 may be a Code Division Multiple Access (CDMA) connection, a Global System for Mobile communications (GSM) connection, or another type of cellular or wireless coupling. In this example, the coupling 1882 may implement any of a variety of types of data transfer technology, such as Single Carrier Radio Transmission Technology (1×RTT), Evolution-Data Optimized (EVDO) technology, General Packet Radio Service (GPRS) technology, Enhanced Data rates for GSM Evolution (EDGE) technology, third Generation Partnership Project (3GPP) including 3G, fourth generation wireless (4G) networks, Universal Mobile Telecommunications System (UMTS), High Speed Packet Access (HSPA), Worldwide Interoperability for Microwave Access (WiMAX), Long Term Evolution (LTE) standard, others defined by various standard-setting organizations, other long range protocols, or other data transfer technology.
The instructions 1816 may be transmitted or received over the network 1880 using a transmission medium via a network interface device (e.g., a network interface component included in the communication components 1864) and utilizing any one of a number of well-known transfer protocols (e.g., HTTP). Similarly, the instructions 1816 may be transmitted or received using a transmission medium via the coupling 1872 (e.g., a peer-to-peer coupling) to the devices 1870. The terms “transmission medium” and “signal medium” mean the same thing and may be used interchangeably in this disclosure. The terms “transmission medium” and “signal medium” shall be taken to include any intangible medium that is capable of storing, encoding, or carrying the instructions 1816 for execution by the machine 1800, and includes digital or analog communications signals or other intangible media to facilitate communication of such software. Hence, the terms “transmission medium” and “signal medium” shall be taken to include any form of modulated data signal, carrier wave, and so forth. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a matter as to encode information in the signal.
The terms “machine-readable medium,” “computer-readable medium” and “device-readable medium” mean the same thing and may be used interchangeably in this disclosure. The terms are defined to include both machine-storage media and transmission media. Thus, the terms include both storage devices/media and carrier waves/modulated data signals.
This patent application is related, in subject matter only, to U.S. application Ser. No. ______, with title, “Techniques to Facilitate Personalized, Text Messaging Campaigns at Scale,” filed on [FILING DATE.]