Video interviews

One of the cool features available out of the box with NativeVideo is the ability to run video interviews directly in Salesforce.

Any designated Salesforce user can easily setup interview templates, so that users can record videos answering questions in a pre-defined timeframe. You could for instance define a pool of 20 questions and run video interviews where just 3 of them are randomly selected and displayed one at a time to your end users. Alternatively, you can specify a fixed set of questions and ask all of them in a predefined order.

In this chapter we will:

  1. Introduce a real use case where video interviews are widely adopted
  2. Showcase how a video interview can be configured in Salesforce
  3. Configure the recording component to run a video interview


1. Recruitment use case

Let's consider a real example, the recruitment use case. The hiring manager defines an interview template for each of the roles she is looking after, whilst the candidates are submitting video recordings answering a randomly selected subset of questions. The hiring manager will then review all of the videos recorded by the candidates and decide who to invite to the face to face stage.

NativeVideo could also be used to attract talent in a different way: hiring managers could record a video description for their ideal candidate, offering a more natural and direct description of what it is like working with them and overall about the company culture. Candidates will then have a better picture of what is expected from them, as well as on what they will find if they were to join the company... bringing more efficiency to the overall hiring process.


From a Salesforce point of view, we will design this scenario leveraging the following objects:

  • Vacancy, to capture the role requirements and the set of interview questions
  • Contact, referencing all the personal details of each candidate
  • Application, as junction object between a Vacancy and a Contact, storing a reference to the video interview


2. Video interview configurations

The NativeVideo package alreay offers all of the required objects to configure a video interview:

  • Video Interview Template, as a wrapper around the question. This object will allow you to define if all questions have to be asked, or if just a subset will be randomly presented to the end user
  • Video Question, child of the Video Interview Template, enabling the definition of the actual question (text only for now) and the amount of time (in seconds) granted to the end user to answer

Let's go ahead and configure an instance of a Video Interview Template in Salesforce: find the Video Interview Template in the list of all available objects and create a new record:

Interview Questionnaire

In summary:

  • Title is the name of the video questionnaire
  • Description is just to add further information to how / when to use this template
  • Is Active is a flag to deploy this template to actual users
  • Randomize to activate the random selection of questions
  • How many questions to ask to define the number of questions to ask. If left empty, NativeVideo will prompt all questions
  • Associated Object(s) could indicate if there is an association between this template and one or more Salesforce objects. The list of feasible values is defined in a Picklist Value Sets called Video Questionnaire Objects, that can be easily found and configured in the Setup panel


Once the new Video Interview Template has been saved it's possible to add as many questions as desired, directly from the Related section in the details page:

Video Question creation

Creating a question is very simple, just specify:

  • Question, the text that the candidate will see on screen during the recording
  • Duration (in seconds), the time granted to the user to answer
  • Order, as the position of the question in the overall interview experience. This field is relevand only if the Randomize flag is not checked


All done, we are now ready to configure a Lightning Action on the Application details page, so that a candidate can record a video interview.


3. Recording component to run a video interview

The process of creating a Lightning Action that shows a wrapper of the VideoRecord component is the same as described in the previous two chapters (read here in case you've missed it). The only difference that we need to highlight here is that during the creation of the NativeVideo component, a reference to the questionnaire has to be made. There are actually two ways to do so:

  1. Indicate the Salesforce record id of the Video Interview Template that has to be displayed, or
  2. Reference the API name of the lookup field that hosts the pointer to the Video Interview Template that has to be asked

In this example, we will configure our Component to automatically fetch the Video Interview Template indicated in the lookup field on the Vacancy that is the parent of the Application where the Lightning Action has been triggered from. To make it more clear, on the Vacancy object there is a lookup called "Interview_Questions__c", so considering that the Lightning Action is triggered from an Application details page, we will then indicate in our component just "Vacancy__r.Interview_Questions__c". Once this is done, NativeVideo will take care of dynamically fetching the value of the interview template.


The code of the Component's Controller (ApplicationVideoRecordAction) configured in the Lightning Action on the Application object looks like the following:

Application - Record an Interview
({
	doInit : function(component, event, helper) {
        var runningId = component.get('v.recordId');
		$A.createComponent(
			"nativevideo:VideoRecord",
			{
				"aura:id": "recordingApplication",
                "updateObjectName" : "Application__c",
                "updateField" : "Video__c",
                "questionnaireField" : "Vacancy__r.Interview_Questions__c",
                "updateRecordID" : runningId,
                "videoApprovedOrigin" : "https://" + window.location.host
            },
			function(newComponent, status, errorMessage) {
				if (status === "SUCCESS") {
					component.find("recordingApplicationCnt").set("v.body", newComponent);
				} else if (status === "INCOMPLETE") {
					console.log("No response from server or client is offline.");
				} else if (status === "ERROR") {
					console.log("Error: " + errorMessage);
				}
			}
		);
	},
    
    handleVideoRecordingEvent : function(component, event) {
        if(event != null && event.getParam('eventType') === 'video_approved') {
            $A.get("e.force:closeQuickAction").fire();
        }
    }
})

At row 10 you can notice the key difference: the reference to the questionnaire lookup field. This configuration is enough to offer a different user experience during the recording.


Once the user has pressed the Record button, after the usual countdown the first question will appear, alongside the current index of the interview and the amount of time (in seconds) left to answer. An example is captured in the following screen:

Application Interview Recording


From a browsing point of view, nothing special needs to be configured - NativeVideo will understand by itself that the video has been recorded as an interview, and therefore it will fetch and display the questions that have been asked. The only thing to remember is to make sure that the VideoList component is not hiding the footer.


Conclusion & Next Steps

We have now seen how easy is to transform a simple video recording experience into a more sophisticated video interview, always leveraging the same fundamental set of video recording and video browsing components.

In the next chapter we will present another feature, that allows Business Development and Sales Teams to record a video message for a specific lead and send it through email. Once the prospect has opened the email, a thumbnail will be displayed, inviting the user to watch the personalised video message. Next section here.