KFCは、ロシア全土に毎年約100のレストランをオープンしており、従業員が必要です。多くの人はまた、学生などの一時的な仕事の場所としてチェーンのレストランを選びます。KFCは毎月15,000件以上の求人応募を受け付けています。一方で、会社には従業員がいなくなることはありませんが、他方では、これらすべての候補者を処理するために何人の人事マネージャーが必要になるか想像できますか?
さらに、これらの応答のほとんどにはエラーが含まれており、空席とは無関係なものもあります。そして、HRは彼らに時間を費やしますが、本当に価値のある候補者を逃します。どうすればこれを回避できますか?
採用プロセスを改善するために、KFCはVoximplantと提携してい ます。同社は次のアイデアを提案しました。ロボットはすべての候補者に電話をかけ、空席の関連性を尋ね、肯定的な回答の場合は空席について詳しく説明し、コールセンターに接続します。
結果はすべての期待を上回りました。ロボットは人間の10倍の速さで応答を処理し、候補者の37%を排除し、人事マネージャーは関心のある候補者とのみ通信するため、コンバージョンが増加します。
それがどのように機能するか見てみましょう
Voximplantプラットフォームでこのようなロボットを作成することは、見た目よりもはるかに簡単です。今すぐ似たようなロボットを書いてみましょう。
, . , , , , -.
Voximplant, . , :
require(Modules.ASR);
require(Modules.Player);
const callerid = '7xxxxxxxxxx';
const operator = '7xxxxxxxxxx';
let data;
let callCandidate, callOperator;
let asr;
, , VoxEngine.customData. JSON : { "phone" : "7xxxxxxxxxx", "name": "" }.
, JSON customData, callerid data.phone :
VoxEngine.addEventListener( AppEvents.Started, async e => {
data = JSON.parse( VoxEngine.customData() );
// callerid data.phone
callCandidate = VoxEngine.callPSTN( data.phone, callerid );
//
callCandidate.addEventListener( CallEvents.Connected, callCandidate_connected_handler );
callCandidate.addEventListener( CallEvents.Disconnected, callCandidate_disconnected_handler );
callCandidate.addEventListener( CallEvents.Failed, callCandidate_failed_handler );
});
, , ( ) . , , :
function callCandidate_connected_handler( e ) {
//
const text = ` ${data.name}. ?`;
const language = VoiceList.Yandex.Neural.ru_RU_alena;
const player = VoxEngine.createTTSPlayer( text, language );
// ,
// ,
player.sendMediaTo( callCandidate );
player.addEventListener( PlayerEvents.PlaybackFinished, playbackFinishedHandler );
};
, . , , :
function playbackFinishedHandler() {
// ASR
const asrProfile = ASRProfileList.Tinkoff.ru_RU;
asr = VoxEngine.createASR( { profile: asrProfile } );
// ,
// ,
callCandidate.sendMediaTo( asr );
asr.addEventListener( ASREvents.Result, asrResultHandler );
}
. . , “”, , , . , , :)
“”, . :
async function asrResultHandler( answer ) {
//
asr.removeEventListener( ASREvents.Result );
// text,
if( answer.text.includes( '' ) ) {
//
data.wantsToWork = '';
// ( callCandidate_disconnected_handler )
callCandidate.hangup();
}
else if ( answer.text.includes( '' ) ) {
data.wantsToWork = '';
//
startOperatorCall();
}
else {
callCandidate.hangup();
}
}
function startOperatorCall() {
const callOperator = VoxEngine.callPSTN( operator, callerid );
//
VoxEngine.sendMediaBetween( callCandidate, callOperator );
//
callOperator.addEventListener( CallEvents.Connected, () => {
Logger.write( ' ' );
});
callOperator.addEventListener( CallEvents.Disconnected, async () => {
callCandidate.hangup();
});
callOperator.addEventListener( CallEvents.Failed, async () => {
callCandidate.hangup();
});
}
. ( ) http- . :
//
async function callCandidate_disconnected_handler( e ) {
const url = 'https://servicename';
// url
await Net.httpRequestAsync( url, { method: 'POST', postData: JSON.stringify(data) } );
//
VoxEngine.terminate();
};
//
function callCandidate_failed_handler( e ) {
VoxEngine.terminate();
};
. , , , , , -.
. , ; . — :)
!