CATEGORIES = ('chat', 'phone')

def encode(value, unknown='error'):
    if unknown not in ('error', 'ignore'):
        raise ValueError('unknown policy must be error or ignore')
    if value not in CATEGORIES and unknown == 'error':
        raise ValueError('unseen category')
    return [int(value == category) for category in CATEGORIES]

print('columns', CATEGORIES)
print('chat', encode('chat'))
print('phone', encode('phone'))
print('email ignored', encode('email', unknown='ignore'))
try:
    encode('email')
except ValueError as error:
    print('email rejected:', error)
assert encode('chat') == [1, 0]
assert encode('phone') == [0, 1]
assert encode('email', 'ignore') == [0, 0]
assert encode('chat')[1:] == encode('email', 'ignore')[1:] == [0]
