react-native-slang
Version:
React native interface for Slang
63 lines (56 loc) • 1.78 kB
JavaScript
import {SlangEntity, SlangIntent, SlangStatement} from './slangIntent';
import {NativeModules} from 'react-native';
const {SlangBuddy} = NativeModules;
const entityExtractor = entities => {
return entities.map(entity => {
const entityType = entity.type;
const value = entity.value;
const name = entity.name;
const isRequired = entity.isRequired;
const isResolved = entity.isResolved;
const isList = entity.isList;
let listValues = null;
if (isList && isResolved) {
listValues = entityExtractor(entity.listValues);
}
const slangEntity = new SlangEntity(
name,
entityType,
value,
isRequired,
isResolved,
isList,
listValues,
);
return slangEntity;
});
};
// Takes response from android sdk and the schema and
// creates a sdk specific view to be used by the application developer.
const createSlangIntent = slangIntentFromSDK => {
const name = slangIntentFromSDK.intent.name;
const userUtterance = slangIntentFromSDK.intent.userUtterance;
const status = slangIntentFromSDK.intent.status;
const completionStatementAffirmative =
slangIntentFromSDK.intent.completionStatement_affirmative;
const completionStatementNegative =
slangIntentFromSDK.intent.completionStatement_negative;
const overrideAffirmative = overrideStatement => {
SlangBuddy.overrideAffirmative(overrideStatement);
};
const slangStatement = new SlangStatement(
completionStatementAffirmative,
completionStatementNegative,
overrideAffirmative,
);
let entities = entityExtractor(slangIntentFromSDK.entities);
const intent = new SlangIntent(
name,
slangStatement,
entities,
userUtterance,
status,
);
return intent;
};
export {createSlangIntent};